annotate gtk4/dw.c @ 2286:2d282d8fe911

GTK4: Change to how the action name is created, don't use the menu label... instead use the handle to the menu and the menu id... so there are never any invalid characters in it.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 03 Feb 2021 22:39:16 +0000
parents 3361ce6070ce
children 680212c356e3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2 * Dynamic Windows:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3 * A GTK like cross-platform GUI
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4 * GTK4 forwarder module for portabilty.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5 *
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6 * (C) 2000-2021 Brian Smith <brian@dbsoft.org>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7 * (C) 2003-2011 Mark Hessling <mark@rexx.org>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9 #include "dwconfig.h"
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10 #include "dw.h"
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11 #include <glib/gi18n.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12 #include <string.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
13 #include <stdlib.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
14 #include <sys/utsname.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
15 #include <sys/socket.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
16 #include <sys/un.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
17 #include <sys/mman.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
18 #include <stdarg.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
19 #include <stdio.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
20 #include <unistd.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
21 #include <ctype.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
22 #include <errno.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
23 #include <sys/time.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
24 #include <dirent.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
25 #include <sys/stat.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
26 #include <signal.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
27 #include <fcntl.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
28 #include <unistd.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
29 #include <math.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
30 #include <gdk/gdkkeysyms.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
31
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
32
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
33 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
34 #include <webkit2/webkit2.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
35 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
36
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
37 #include <gdk-pixbuf/gdk-pixbuf.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
38
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
39 #if __STDC_VERSION__ < 199901L
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
40 # if __GNUC__ >= 2
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
41 # define __func__ __FUNCTION__
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
42 # else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
43 # define __func__ "<unknown>"
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
44 # endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
45 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
46
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
47 /* ff = 255 = 1.0000
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
48 * ee = 238 = 0.9333
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
49 * cc = 204 = 0.8000
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
50 * bb = 187 = 0.7333
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
51 * aa = 170 = 0.6667
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
52 * 77 = 119 = 0.4667
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
53 * 00 = 0 = 0.0000
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
54 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
55 GdkRGBA _colors[] =
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
56 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
57 { 0.0000, 0.0000, 0.0000, 1.0 }, /* 0 black */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
58 { 0.7333, 0.0000, 0.0000, 1.0 }, /* 1 red */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
59 { 0.0000, 0.7333, 0.0000, 1.0 }, /* 2 green */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
60 { 0.6667, 0.6667, 0.0000, 1.0 }, /* 3 yellow */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
61 { 0.0000, 0.0000, 0.8000, 1.0 }, /* 4 blue */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
62 { 0.7333, 0.0000, 0.7333, 1.0 }, /* 5 magenta */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
63 { 0.0000, 0.7333, 0.7333, 1.0 }, /* 6 cyan */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
64 { 0.7333, 0.7333, 0.7333, 1.0 }, /* 7 white */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
65 { 0.4667, 0.4667, 0.4667, 1.0 }, /* 8 grey */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
66 { 1.0000, 0.0000, 0.0000, 1.0 }, /* 9 bright red */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
67 { 0.0000, 1.0000, 0.0000, 1.0 }, /* 10 bright green */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
68 { 0.9333, 0.9333, 0.0000, 1.0 }, /* 11 bright yellow */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
69 { 0.0000, 0.0000, 1.0000, 1.0 }, /* 12 bright blue */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
70 { 1.0000, 0.0000, 1.0000, 1.0 }, /* 13 bright magenta */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
71 { 0.0000, 0.9333, 0.9333, 1.0 }, /* 14 bright cyan */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
72 { 1.0000, 1.0000, 1.0000, 1.0 }, /* 15 bright white */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
73 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
74
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
75 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
76 * List those icons that have transparency first
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
77 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
78 #define NUM_EXTS 9
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
79 char *image_exts[NUM_EXTS] =
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
80 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
81 ".xpm",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
82 ".png",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
83 ".ico",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
84 ".icns",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
85 ".gif",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
86 ".jpg",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
87 ".jpeg",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
88 ".tiff",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
89 ".bmp"
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
90 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
91
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
92 #ifndef max
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
93 # define max(a,b) (((a) > (b)) ? (a) : (b))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
94 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
95
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
96 #ifndef min
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
97 # define min(a,b) (((a) < (b)) ? (a) : (b))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
98 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
99
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
100 pthread_key_t _dw_fg_color_key;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
101 pthread_key_t _dw_bg_color_key;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
102
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
103 GtkWidget *last_window = NULL, *popup = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
104
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
105 static int _dw_ignore_expand = 0;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
106 static pthread_t _dw_thread = (pthread_t)-1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
107
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
108 #define DEFAULT_SIZE_WIDTH 12
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
109 #define DEFAULT_SIZE_HEIGHT 6
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
110 #define DEFAULT_TITLEBAR_HEIGHT 22
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
111
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
112 #define _DW_TREE_TYPE_CONTAINER 1
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
113 #define _DW_TREE_TYPE_TREE 2
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
114 #define _DW_TREE_TYPE_LISTBOX 3
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
115 #define _DW_TREE_TYPE_COMBOBOX 4
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
116
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
117 /* Signal forwarder prototypes */
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
118 static gint _dw_button_press_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data);
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
119 static gint _dw_button_release_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
120 static gint _dw_motion_notify_event(GtkEventControllerMotion *controller, double x, double y, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
121 static gboolean _dw_delete_event(GtkWidget *window, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
122 static gint _dw_key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
123 static gint _dw_generic_event(GtkWidget *widget, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
124 static gint _dw_configure_event(GtkWidget *widget, int width, int height, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
125 static gint _dw_container_enter_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
126 static gint _dw_combobox_select_event(GtkWidget *widget, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
127 static gint _dw_expose_event(GtkWidget *widget, cairo_t *cr, int width, int height, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
128 static gint _dw_set_focus_event(GtkWindow *window, GtkWidget *widget, gpointer data);
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
129 static gint _dw_tree_context_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
130 static gint _dw_value_changed_event(GtkWidget *widget, gpointer user_data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
131 static gint _dw_tree_select_event(GtkTreeSelection *sel, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
132 static gint _dw_tree_expand_event(GtkTreeView *treeview, GtkTreeIter *arg1, GtkTreePath *arg2, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
133 static gint _dw_switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
134 static gint _dw_column_click_event(GtkWidget *widget, gpointer data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
135 #ifdef USE_WEBKIT
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
136 static void _dw_html_result_event(GObject *object, GAsyncResult *result, gpointer script_data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
137 static void _dw_html_changed_event(WebKitWebView *web_view, WebKitLoadEvent load_event, gpointer data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
138 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
139 static void _dw_signal_disconnect(gpointer data, GClosure *closure);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
140
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
141 GObject *_DWObject = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
142 GApplication *_DWApp = NULL;
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
143 GMainLoop *_DWMainLoop = NULL;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
144 static char _dw_app_id[_DW_APP_ID_SIZE+1] = { 0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
145 char *_DWDefaultFont = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
146 static char _dw_share_path[PATH_MAX+1] = { 0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
147
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
148 typedef struct _dw_signal_list
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
149 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
150 void *func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
151 char name[30];
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
152 char gname[30];
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
153 GObject *(*setup)(struct _dw_signal_list *, GObject *, void *[], void *, void *, void *);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
154
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
155 } SignalList;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
156
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
157 /* Signal setup function prototypes */
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
158 GObject *_dw_key_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
159 GObject *_dw_button_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data);
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
160 GObject *_dw_mouse_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
161 GObject *_dw_motion_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
162 GObject *_dw_draw_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
163 GObject *_dw_value_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
164 GObject *_dw_tree_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
165 GObject *_dw_focus_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
166 #ifdef USE_WEBKIT
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
167 GObject *_dw_html_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
168 #endif
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
169
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
170 typedef struct
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
171 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
172 HWND window;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
173 void *func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
174 gpointer data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
175 gint cid;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
176 void *intfunc;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
177
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
178 } SignalHandler;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
179
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
180 /* A list of signal forwarders, to account for paramater differences. */
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
181 static SignalList SignalTranslate[] = {
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
182 { _dw_configure_event, DW_SIGNAL_CONFIGURE, "resize", NULL },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
183 { _dw_key_press_event, DW_SIGNAL_KEY_PRESS, "key-pressed", _dw_key_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
184 { _dw_button_press_event, DW_SIGNAL_BUTTON_PRESS, "pressed", _dw_mouse_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
185 { _dw_button_release_event, DW_SIGNAL_BUTTON_RELEASE, "released", _dw_mouse_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
186 { _dw_motion_notify_event, DW_SIGNAL_MOTION_NOTIFY, "motion", _dw_motion_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
187 { _dw_delete_event, DW_SIGNAL_DELETE, "close-request", NULL },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
188 { _dw_expose_event, DW_SIGNAL_EXPOSE, "draw", _dw_draw_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
189 { _dw_generic_event, DW_SIGNAL_CLICKED, "clicked", _dw_button_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
190 { _dw_container_enter_event, DW_SIGNAL_ITEM_ENTER, "key-pressed", _dw_key_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
191 { _dw_tree_context_event, DW_SIGNAL_ITEM_CONTEXT, "pressed", _dw_tree_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
192 { _dw_combobox_select_event, DW_SIGNAL_LIST_SELECT, "changed", NULL },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
193 { _dw_tree_select_event, DW_SIGNAL_ITEM_SELECT, "changed", _dw_tree_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
194 { _dw_set_focus_event, DW_SIGNAL_SET_FOCUS, "activate-focus", _dw_focus_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
195 { _dw_value_changed_event, DW_SIGNAL_VALUE_CHANGED, "value-changed", _dw_value_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
196 { _dw_switch_page_event, DW_SIGNAL_SWITCH_PAGE, "switch-page", NULL },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
197 { _dw_column_click_event, DW_SIGNAL_COLUMN_CLICK, "activate", _dw_tree_setup },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
198 { _dw_tree_expand_event, DW_SIGNAL_TREE_EXPAND, "row-expanded", NULL },
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
199 #ifdef USE_WEBKIT
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
200 { _dw_html_changed_event, DW_SIGNAL_HTML_CHANGED, "load-changed", NULL },
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
201 { _dw_html_result_event, DW_SIGNAL_HTML_RESULT, "", _dw_html_setup },
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
202 #endif
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
203 { NULL, "", "", NULL }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
204 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
205
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
206 /* Alignment flags */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
207 #define DW_CENTER 0.5f
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
208 #define DW_LEFT 0.0f
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
209 #define DW_RIGHT 1.0f
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
210 #define DW_TOP 0.0f
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
211 #define DW_BOTTOM 1.0f
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
212
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
213 static void _dw_msleep(long period)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
214 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
215 #ifdef __sun__
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
216 /* usleep() isn't threadsafe on Solaris */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
217 struct timespec req;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
218
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
219 req.tv_sec = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
220 if(period >= 1000)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
221 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
222 req.tv_sec = (int)(period / 1000);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
223 period -= (req.tv_sec * 1000);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
224 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
225 req.tv_nsec = period * 10000000;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
226
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
227 nanosleep(&req, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
228 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
229 usleep(period * 1000);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
230 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
231 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
232
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
233 /* Finds the translation function for a given signal name */
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
234 static SignalList _dw_findsignal(const char *signame)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
235 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
236 int z=0;
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
237 static SignalList empty = {0};
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
238
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
239 while(SignalTranslate[z].func)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
240 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
241 if(strcasecmp(signame, SignalTranslate[z].name) == 0)
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
242 return SignalTranslate[z];
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
243 z++;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
244 }
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
245 return empty;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
246 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
247
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
248 static SignalHandler _dw_get_signal_handler(gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
249 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
250 SignalHandler sh = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
251
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
252 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
253 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
254 void **params = (void **)data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
255 int counter = GPOINTER_TO_INT(params[0]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
256 GtkWidget *widget = (GtkWidget *)params[2];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
257 char text[100];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
258
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
259 sprintf(text, "_dw_sigwindow%d", counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
260 sh.window = (HWND)g_object_get_data(G_OBJECT(widget), text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
261 sprintf(text, "_dw_sigfunc%d", counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
262 sh.func = (void *)g_object_get_data(G_OBJECT(widget), text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
263 sprintf(text, "_dw_intfunc%d", counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
264 sh.intfunc = (void *)g_object_get_data(G_OBJECT(widget), text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
265 sprintf(text, "_dw_sigdata%d", counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
266 sh.data = g_object_get_data(G_OBJECT(widget), text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
267 sprintf(text, "_dw_sigcid%d", counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
268 sh.cid = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), text));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
269 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
270 return sh;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
271 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
272
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
273 static void _dw_remove_signal_handler(GtkWidget *widget, int counter)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
274 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
275 char text[100];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
276 gint cid;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
277
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
278 sprintf(text, "_dw_sigcid%d", counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
279 cid = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), text));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
280 g_signal_handler_disconnect(G_OBJECT(widget), cid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
281 g_object_set_data(G_OBJECT(widget), text, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
282 sprintf(text, "_dw_sigwindow%d", counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
283 g_object_set_data(G_OBJECT(widget), text, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
284 sprintf(text, "_dw_sigfunc%d", counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
285 g_object_set_data(G_OBJECT(widget), text, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
286 sprintf(text, "_dw_intfunc%d", counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
287 g_object_set_data(G_OBJECT(widget), text, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
288 sprintf(text, "_dw_sigdata%d", counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
289 g_object_set_data(G_OBJECT(widget), text, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
290 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
291
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
292 static int _dw_set_signal_handler(GObject *object, HWND window, void *func, gpointer data, void *intfunc, void *discfunc)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
293 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
294 int counter = GPOINTER_TO_INT(g_object_get_data(object, "_dw_sigcounter"));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
295 char text[100];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
296
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
297 sprintf(text, "_dw_sigwindow%d", counter);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
298 g_object_set_data(object, text, (gpointer)window);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
299 sprintf(text, "_dw_sigfunc%d", counter);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
300 g_object_set_data(object, text, (gpointer)func);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
301 sprintf(text, "_dw_intfunc%d", counter);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
302 g_object_set_data(object, text, (gpointer)intfunc);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
303 sprintf(text, "_dw_discfunc%d", counter);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
304 g_object_set_data(object, text, (gpointer)discfunc);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
305 sprintf(text, "_dw_sigdata%d", counter);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
306 g_object_set_data(object, text, (gpointer)data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
307
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
308 counter++;
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
309 g_object_set_data(object, "_dw_sigcounter", GINT_TO_POINTER(counter));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
310
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
311 return counter - 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
312 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
313
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
314 static void _dw_set_signal_handler_id(GObject *object, int counter, gint cid)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
315 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
316 char text[100];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
317
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
318 sprintf(text, "_dw_sigcid%d", counter);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
319 g_object_set_data(object, text, GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
320 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
321
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
322 #ifdef USE_WEBKIT
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
323 static void _dw_html_result_event(GObject *object, GAsyncResult *result, gpointer script_data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
324 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
325 pthread_t saved_thread = _dw_thread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
326 WebKitJavascriptResult *js_result;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
327 JSCValue *value;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
328 GError *error = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
329 int (*htmlresultfunc)(HWND, int, char *, void *, void *) = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
330 gint handlerdata = GPOINTER_TO_INT(g_object_get_data(object, "_dw_html_result_id"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
331 void *user_data = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
332
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
333 _dw_thread = (pthread_t)-1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
334 if(handlerdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
335 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
336 SignalHandler work;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
337 void *params[3] = { GINT_TO_POINTER(handlerdata-1), 0, object };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
338
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
339 work = _dw_get_signal_handler(params);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
340
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
341 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
342 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
343 htmlresultfunc = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
344 user_data = work.data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
345 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
346 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
347
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
348 if(!(js_result = webkit_web_view_run_javascript_finish(WEBKIT_WEB_VIEW(object), result, &error)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
349 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
350 if(htmlresultfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
351 htmlresultfunc((HWND)object, DW_ERROR_UNKNOWN, error->message, script_data, user_data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
352 g_error_free (error);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
353 _dw_thread = saved_thread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
354 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
355 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
356
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
357 value = webkit_javascript_result_get_js_value(js_result);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
358 if(jsc_value_is_string(value))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
359 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
360 gchar *str_value = jsc_value_to_string(value);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
361 JSCException *exception = jsc_context_get_exception(jsc_value_get_context(value));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
362
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
363 if(htmlresultfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
364 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
365 if(exception)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
366 htmlresultfunc((HWND)object, DW_ERROR_UNKNOWN, (char *)jsc_exception_get_message(exception), script_data, user_data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
367 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
368 htmlresultfunc((HWND)object, DW_ERROR_NONE, str_value, script_data, user_data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
369 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
370 g_free (str_value);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
371 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
372 else if(htmlresultfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
373 htmlresultfunc((HWND)object, DW_ERROR_UNKNOWN, NULL, script_data, user_data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
374 webkit_javascript_result_unref (js_result);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
375 _dw_thread = saved_thread;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
376 }
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
377
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
378 static void _dw_html_changed_event(WebKitWebView *web_view, WebKitLoadEvent load_event, gpointer data)
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
379 {
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
380 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
381 char *location = (char *)webkit_web_view_get_uri(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
382 int status = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
383
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
384 switch (load_event) {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
385 case WEBKIT_LOAD_STARTED:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
386 status = DW_HTML_CHANGE_STARTED;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
387 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
388 case WEBKIT_LOAD_REDIRECTED:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
389 status = DW_HTML_CHANGE_REDIRECT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
390 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
391 case WEBKIT_LOAD_COMMITTED:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
392 status = DW_HTML_CHANGE_LOADING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
393 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
394 case WEBKIT_LOAD_FINISHED:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
395 status = DW_HTML_CHANGE_COMPLETE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
396 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
397 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
398 if(status && location && work.window && work.func)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
399 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
400 int (*htmlchangedfunc)(HWND, int, char *, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
401
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
402 htmlchangedfunc(work.window, status, location, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
403 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
404 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
405 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
406
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
407 static gint _dw_set_focus_event(GtkWindow *window, GtkWidget *widget, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
408 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
409 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
410 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
411
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
412 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
413 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
414 int (*setfocusfunc)(HWND, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
415
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
416 retval = setfocusfunc(work.window, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
417 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
418 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
419 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
420
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
421 static gint _dw_button_press_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data)
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
422 {
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
423 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
424 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
425
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
426 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
427 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
428 int (*buttonfunc)(HWND, int, int, int, void *) = work.func;
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
429 int mybutton = gtk_gesture_single_get_current_button(gesture);
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
430
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
431 if(mybutton == 3)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
432 mybutton = 2;
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
433 else if(mybutton == 2)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
434 mybutton = 3;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
435
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
436 retval = buttonfunc(work.window, (int)x, (int)y, mybutton, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
437 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
438 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
439 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
440
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
441 static gint _dw_button_release_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data)
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
442 {
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
443 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
444 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
445
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
446 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
447 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
448 int (*buttonfunc)(HWND, int, int, int, void *) = work.func;
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
449 int mybutton = gtk_gesture_single_get_current_button(gesture);
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
450
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
451 if(mybutton == 3)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
452 mybutton = 2;
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
453 else if(mybutton == 2)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
454 mybutton = 3;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
455
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
456 retval = buttonfunc(work.window, (int)x, (int)y, mybutton, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
457 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
458 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
459 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
460
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
461 static gint _dw_motion_notify_event(GtkEventControllerMotion *controller, double x, double y, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
462 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
463 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
464 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
465
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
466 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
467 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
468 int (*motionfunc)(HWND, int, int, int, void *) = work.func;
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
469 GdkEvent *event = gtk_event_controller_get_current_event(GTK_EVENT_CONTROLLER(controller));
2277
ba81894924cb GTK4: Changes to handle the now opaque GdkEvent structure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2276
diff changeset
470 GdkModifierType state = gdk_event_get_modifier_state(event);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
471 int keys = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
472
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
473 if (state & GDK_BUTTON1_MASK)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
474 keys = DW_BUTTON1_MASK;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
475 if (state & GDK_BUTTON3_MASK)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
476 keys |= DW_BUTTON2_MASK;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
477 if (state & GDK_BUTTON2_MASK)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
478 keys |= DW_BUTTON3_MASK;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
479
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
480 retval = motionfunc(work.window, (int)x, (int)y, keys, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
481 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
482 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
483 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
484
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
485 static gboolean _dw_delete_event(GtkWidget *window, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
486 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
487 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
488 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
489
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
490 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
491 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
492 int (*closefunc)(HWND, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
493
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
494 retval = closefunc(work.window, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
495 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
496 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
497 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
498
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
499 static gint _dw_key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
500 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
501 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
502 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
503
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
504 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
505 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
506 int (*keypressfunc)(HWND, char, int, int, void *, char *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
507 guint32 unichar = gdk_keyval_to_unicode(keyval);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
508 char utf8[7] = { 0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
509
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
510 g_unichar_to_utf8(unichar, utf8);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
511
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
512 retval = keypressfunc(work.window, (char)keycode, keyval,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
513 state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_ALT_MASK), work.data, utf8);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
514 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
515 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
516 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
517
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
518 static gint _dw_generic_event(GtkWidget *widget, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
519 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
520 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
521 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
522
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
523 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
524 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
525 int (*genericfunc)(HWND, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
526
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
527 retval = genericfunc(work.window, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
528 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
529 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
530 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
531
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
532 static gint _dw_configure_event(GtkWidget *widget, int width, int height, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
533 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
534 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
535 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
536
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
537 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
538 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
539 int (*sizefunc)(HWND, int, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
540
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
541 retval = sizefunc(work.window, width, height, work.data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
542 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
543 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
544 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
545
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
546 static gint _dw_expose_event(GtkWidget *widget, cairo_t *cr, int width, int height, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
547 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
548 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
549
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
550 if(widget && GTK_IS_DRAWING_AREA(widget))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
551 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
552 DWExpose exp;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
553 int (*exposefunc)(HWND, DWExpose *, void *) = g_object_get_data(G_OBJECT(widget), "_dw_expose_func");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
554
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
555 exp.x = exp.y = 0;
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
556 exp.width = width;
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
557 exp.height = height;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
558 /* Save the cairo context for use in the drawing functions */
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
559 g_object_set_data(G_OBJECT(widget), "_dw_cr", (gpointer)cr);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
560 retval = exposefunc((HWND)widget, &exp, data);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
561 g_object_set_data(G_OBJECT(widget), "_dw_cr", NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
562 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
563 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
564 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
565
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
566 static gint _dw_combobox_select_event(GtkWidget *widget, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
567 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
568 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
569 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
570
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
571 if(g_object_get_data(G_OBJECT(widget), "_dw_recursing"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
572 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
573
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
574 if(work.window && GTK_IS_COMBO_BOX(widget))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
575 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
576 GtkTreeModel *store = gtk_combo_box_get_model(GTK_COMBO_BOX(widget));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
577
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
578 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
579 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
580 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
581 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
582
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
583 g_object_set_data(G_OBJECT(widget), "_dw_recursing", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
584
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
585 if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widget), &iter))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
586 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
587 path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
588
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
589 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
590 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
591 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
592
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
593 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
594 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
595 int (*selectfunc)(HWND, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
596
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
597 retval = selectfunc(work.window, indices[0], work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
598 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
599 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
600 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
601 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
602
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
603 g_object_set_data(G_OBJECT(widget), "_dw_recursing", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
604 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
605 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
606 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
607 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
608
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
609 #define _DW_DATA_TYPE_STRING 0
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
610 #define _DW_DATA_TYPE_POINTER 1
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
611
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
612 static gint _dw_tree_context_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data)
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
613 {
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
614 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
615 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
616
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
617 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
618 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
619 int button = gtk_gesture_single_get_current_button(gesture);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
620
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
621 if(button == 3)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
622 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
623 int (*contextfunc)(HWND, char *, int, int, void *, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
624 char *text = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
625 void *itemdata = NULL;
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
626 GtkWidget *widget = work.window;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
627
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
628 if(widget && GTK_IS_TREE_VIEW(widget))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
629 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
630 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
631 GtkTreeModel *store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
632 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
633
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
634 if(sel && gtk_tree_selection_get_mode(sel) != GTK_SELECTION_MULTIPLE &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
635 gtk_tree_selection_get_selected(sel, NULL, &iter))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
636 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
637 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
638 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
639 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, 2, &itemdata, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
640 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
641 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
642 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
643 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
644 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
645 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
646 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
647 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
648 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
649
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
650 gtk_tree_view_get_cursor(GTK_TREE_VIEW(widget), &path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
651 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
652 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
653 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
654
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
655 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
656 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
657 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
658 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
659 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, 2, &itemdata, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
660 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
661 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
662 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
663 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
664 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
665 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
666 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
667 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
668 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
669 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
670
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
671 retval = contextfunc(work.window, text, (int)x, (int)y, work.data, itemdata);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
672 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
673 g_free(text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
674 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
675 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
676 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
677 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
678
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
679 static gint _dw_tree_select_event(GtkTreeSelection *sel, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
680 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
681 GtkWidget *item = NULL, *widget = (GtkWidget *)gtk_tree_selection_get_tree_view(sel);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
682 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
683
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
684 if(widget)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
685 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
686 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
687
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
688 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
689 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
690 int (*treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
691 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
692 char *text = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
693 void *itemdata = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
694 GtkTreeModel *store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
695
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
696 if(g_object_get_data(G_OBJECT(widget), "_dw_double_click"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
697 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
698 g_object_set_data(G_OBJECT(widget), "_dw_double_click", GINT_TO_POINTER(0));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
699 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
700 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
701
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
702 if(gtk_tree_selection_get_mode(sel) != GTK_SELECTION_MULTIPLE &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
703 gtk_tree_selection_get_selected(sel, NULL, &iter))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
704 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
705 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
706 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
707 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, 2, &itemdata, 3, &item, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
708 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
709 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
710 else if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
711 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
712 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, _DW_DATA_TYPE_POINTER, &itemdata, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
713 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
714 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
715 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
716 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
717 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
718
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
719 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
720 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
721 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
722
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
723 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
724 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
725 int (*selectfunc)(HWND, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
726
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
727 retval = selectfunc(work.window, indices[0], work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
728 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
729 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
730 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
731 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
732 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
733 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
734 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
735 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
736
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
737 gtk_tree_view_get_cursor(GTK_TREE_VIEW(widget), &path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
738 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
739 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
740 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
741
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
742 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
743 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
744 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
745 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
746 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, 2, &itemdata, 3, &item, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
747 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
748 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
749 else if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
750 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
751 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, _DW_DATA_TYPE_POINTER, &itemdata, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
752 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
753 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
754 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
755 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
756 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
757
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
758 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
759 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
760 int (*selectfunc)(HWND, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
761
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
762 retval = selectfunc(work.window, indices[0], work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
763 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
764 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
765 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
766 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
767 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
768 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
769 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
770 g_free(text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
771 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
772 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
773 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
774 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
775
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
776 static gint _dw_tree_expand_event(GtkTreeView *widget, GtkTreeIter *iter, GtkTreePath *path, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
777 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
778 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
779 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
780
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
781 if(!_dw_ignore_expand && work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
782 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
783 int (*treeexpandfunc)(HWND, HTREEITEM, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
784 retval = treeexpandfunc(work.window, (HTREEITEM)iter, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
785 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
786 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
787 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
788
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
789 static gint _dw_container_enter_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
790 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
791 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
792 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
793
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
794 if(work.window && GTK_IS_WIDGET(work.window))
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
795 {
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
796 GtkWidget *widget = work.window;
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
797 GdkEvent *event = gtk_event_controller_get_current_event(GTK_EVENT_CONTROLLER(controller));
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
798 GdkEventType type = gdk_event_get_event_type(event);
2277
ba81894924cb GTK4: Changes to handle the now opaque GdkEvent structure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2276
diff changeset
799 gint button = gdk_button_event_get_button(event);
ba81894924cb GTK4: Changes to handle the now opaque GdkEvent structure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2276
diff changeset
800
ba81894924cb GTK4: Changes to handle the now opaque GdkEvent structure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2276
diff changeset
801 /* TODO: Make sure this works.
ba81894924cb GTK4: Changes to handle the now opaque GdkEvent structure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2276
diff changeset
802 Handle both key and button events together */
ba81894924cb GTK4: Changes to handle the now opaque GdkEvent structure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2276
diff changeset
803 if((type == GDK_BUTTON_PRESS && button == 1) || keyval == VK_RETURN)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
804 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
805 int (*contextfunc)(HWND, char *, void *, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
806 char *text = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
807 void *data = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
808
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
809 /* Sanity check */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
810 if(GTK_IS_TREE_VIEW(widget))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
811 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
812 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
813 GtkTreeModel *store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
814
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
815 gtk_tree_view_get_cursor(GTK_TREE_VIEW(widget), &path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
816 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
817 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
818 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
819
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
820 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
821 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
822 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
823 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
824 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, _DW_DATA_TYPE_POINTER, &data, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
825 retval = contextfunc(work.window, text, work.data, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
826 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
827 g_free(text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
828 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
829 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
830 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
831 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
832 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
833 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
834 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
835 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
836 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
837
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
838 /* Return the logical page id from the physical page id */
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
839 int _dw_get_logical_page(HWND handle, unsigned long pageid)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
840 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
841 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
842 GtkWidget **pagearray = g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
843 GtkWidget *thispage = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), pageid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
844
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
845 if(pagearray && thispage)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
846 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
847 for(z=0;z<256;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
848 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
849 if(thispage == pagearray[z])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
850 return z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
851 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
852 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
853 return 256;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
854 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
855
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
856
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
857 static gint _dw_switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
858 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
859 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
860 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
861
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
862 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
863 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
864 int (*switchpagefunc)(HWND, unsigned long, void *) = work.func;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
865 retval = switchpagefunc(work.window, _dw_get_logical_page(GTK_WIDGET(notebook), page_num), work.data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
866 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
867 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
868 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
869
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
870 static gint _dw_column_click_event(GtkWidget *widget, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
871 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
872 void **params = data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
873 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
874
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
875 if(params && params[2])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
876 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
877 GtkWidget *tree = (GtkWidget *)params[2];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
878 gint handlerdata = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(tree), "_dw_column_click_id"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
879
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
880 if(handlerdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
881 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
882 SignalHandler work;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
883
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
884 params[0] = GINT_TO_POINTER(handlerdata-1);
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
885 work = _dw_get_signal_handler(params);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
886
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
887 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
888 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
889 int column_num = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "_dw_column"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
890 int (*clickcolumnfunc)(HWND, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
891 retval = clickcolumnfunc(work.window, column_num, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
892 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
893 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
894 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
895 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
896 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
897
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
898 static int _round_value(gfloat val)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
899 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
900 int newval = (int)val;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
901
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
902 if(val >= 0.5 + (gfloat)newval)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
903 newval++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
904
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
905 return newval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
906 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
907
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
908 static gint _dw_value_changed_event(GtkWidget *widget, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
909 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
910 GtkWidget *slider, *spinbutton, *scrollbar;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
911 GtkAdjustment *adjustment = (GtkAdjustment *)widget;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
912 int max, val;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
913
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
914 if(!GTK_IS_ADJUSTMENT(adjustment))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
915 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(widget), "_dw_adjustment");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
916
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
917 slider = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_slider");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
918 spinbutton = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_spinbutton");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
919 scrollbar = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_scrollbar");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
920
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
921 max = _round_value(gtk_adjustment_get_upper(adjustment));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
922 val = _round_value(gtk_adjustment_get_value(adjustment));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
923
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
924 if(g_object_get_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
925 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
926
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
927 if(slider || spinbutton || scrollbar)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
928 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
929 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
930
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
931 if (work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
932 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
933 int (*valuechangedfunc)(HWND, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
934
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
935 if(slider && gtk_orientable_get_orientation(GTK_ORIENTABLE(slider)) == GTK_ORIENTATION_VERTICAL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
936 valuechangedfunc(work.window, (max - val) - 1, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
937 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
938 valuechangedfunc(work.window, val, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
939 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
940 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
941 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
942 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
943
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
944 static gint _dw_default_key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
945 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
946 GtkWidget *next = (GtkWidget *)data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
947
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
948 if(next)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
949 {
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
950 if(keyval == GDK_KEY_Return)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
951 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
952 if(GTK_IS_BUTTON(next))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
953 g_signal_emit_by_name(G_OBJECT(next), "clicked");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
954 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
955 gtk_widget_grab_focus(next);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
956 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
957 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
958 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
959 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
960
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
961 static void _dw_dialog_response(GtkDialog *dialog, int response_id, gpointer data)
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
962 {
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
963 DWDialog *dwdialog = (DWDialog *)data;
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
964
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
965 if(dwdialog)
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
966 dw_dialog_dismiss(dwdialog, DW_INT_TO_POINTER(response_id));
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
967 }
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
968
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
969 static GdkPixbuf *_dw_pixbuf_from_resource(unsigned int rid)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
970 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
971 char resource_path[201] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
972 snprintf(resource_path, 200, "/org/dbsoft/dwindows/resources/%u.png", rid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
973 return gdk_pixbuf_new_from_resource(resource_path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
974 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
975
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
976 static GdkPixbuf *_dw_find_pixbuf(HICN icon, unsigned long *userwidth, unsigned long *userheight)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
977 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
978 unsigned int id = GPOINTER_TO_INT(icon);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
979 GdkPixbuf *icon_pixbuf = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
980
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
981 /* Quick dropout for non-handle */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
982 if(!icon)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
983 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
984
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
985 if(id > 65535)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
986 icon_pixbuf = icon;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
987 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
988 icon_pixbuf = _dw_pixbuf_from_resource(id);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
989
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
990 if(userwidth)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
991 *userwidth = icon_pixbuf ? gdk_pixbuf_get_width(icon_pixbuf) : 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
992 if(userheight)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
993 *userheight = icon_pixbuf ? gdk_pixbuf_get_height(icon_pixbuf) : 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
994
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
995 return icon_pixbuf;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
996 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
997
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
998 /* Handle system notification click callbacks */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
999 static void _dw_notification_handler(GSimpleAction *action, GVariant *param, gpointer user_data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1000 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1001 char textbuf[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1002 int (*func)(HWND, void *);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1003 void *data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1004
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1005 snprintf(textbuf, 100, "dw-notification-%llu-func", DW_POINTER_TO_ULONGLONG(g_variant_get_uint64(param)));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1006 func = g_object_get_data(G_OBJECT(_DWApp), textbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1007 g_object_set_data(G_OBJECT(_DWApp), textbuf, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1008 snprintf(textbuf, 100, "dw-notification-%llu-data", DW_POINTER_TO_ULONGLONG(g_variant_get_uint64(param)));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1009 data = g_object_get_data(G_OBJECT(_DWApp), textbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1010 g_object_set_data(G_OBJECT(_DWApp), textbuf, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1011
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1012 if(func)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1013 func((HWND)DW_ULONGLONG_TO_POINTER(g_variant_get_uint64(param)), data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1014 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1015
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1016 /* Handle menu click callbacks */
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1017 static void _dw_menu_handler(GSimpleAction *action, GVariant *param, gpointer data)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1018 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1019 SignalHandler work = _dw_get_signal_handler(data);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1020
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1021 if(work.window)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1022 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1023 int (*genericfunc)(HWND, void *) = work.func;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1024
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1025 genericfunc(work.window, work.data);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1026 }
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1027 }
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1028
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1029 /* Internal function to add padding to boxes or other widgets */
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1030 static void _dw_widget_set_pad(GtkWidget *widget, int pad)
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1031 {
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1032 /* Set pad for each margin direction on the widget */
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1033 gtk_widget_set_margin_start(widget, pad);
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1034 gtk_widget_set_margin_end(widget, pad);
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1035 gtk_widget_set_margin_top(widget, pad);
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1036 gtk_widget_set_margin_bottom(widget, pad);
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1037 }
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1038
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1039 static void _dw_app_activate(GApplication *app, gpointer user_data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1040 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1041 /* Not sure why this signal is required, but GLib gives warnings
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1042 * when this signal is not connected, so putting this here to
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1043 * quell the warning and can be used at a later point if needed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1044 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1045 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1046
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1047 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1048 * Initializes the Dynamic Windows engine.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1049 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1050 * newthread: True if this is the only thread.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1051 * False if there is already a message loop running.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1052 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1053 int dw_init(int newthread, int argc, char *argv[])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1054 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1055 /* Setup the private data directory */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1056 if(argc > 0 && argv[0])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1057 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1058 char *pathcopy = strdup(argv[0]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1059 char *pos = strrchr(pathcopy, '/');
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1060 char *binname = pathcopy;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1061
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1062 /* If we have a / then...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1063 * the binary name should be at the end.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1064 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1065 if(pos)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1066 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1067 binname = pos + 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1068 *pos = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1069 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1070
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1071 if(*binname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1072 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1073 char *binpos = strstr(pathcopy, "/bin");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1074
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1075 if(binpos)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1076 strncpy(_dw_share_path, pathcopy, (size_t)(binpos - pathcopy));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1077 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1078 strcpy(_dw_share_path, "/usr/local");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1079 strcat(_dw_share_path, "/share/");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1080 strcat(_dw_share_path, binname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1081 if(!_dw_app_id[0])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1082 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1083 /* If we have a binary name, use that for the Application ID instead. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1084 snprintf(_dw_app_id, _DW_APP_ID_SIZE, "%s.%s", DW_APP_DOMAIN_DEFAULT, binname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1085 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1086 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1087 if(pathcopy)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1088 free(pathcopy);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1089 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1090 /* If that failed... just get the current directory */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1091 if(!_dw_share_path[0] && !getcwd(_dw_share_path, PATH_MAX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1092 _dw_share_path[0] = '/';
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1093
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1094 gtk_init();
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1095
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1096 _DWMainLoop = g_main_loop_new(NULL, FALSE);
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1097 g_main_loop_ref(_DWMainLoop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1098
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1099 pthread_key_create(&_dw_fg_color_key, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1100 pthread_key_create(&_dw_bg_color_key, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1101
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1102 _dw_init_thread();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1103
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1104 /* Create a global object for glib activities */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1105 _DWObject = g_object_new(G_TYPE_OBJECT, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1106
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1107 if(!_dw_app_id[0])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1108 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1109 /* Generate an Application ID based on the PID if all else fails. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1110 snprintf(_dw_app_id, _DW_APP_ID_SIZE, "%s.pid.%d", DW_APP_DOMAIN_DEFAULT, (int)getpid());
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1111 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1112
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1113 /* Initialize the application subsystem on supported versions...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1114 * we generate an application ID based on the binary name or PID
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1115 * instead of passing NULL to enable full application support.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1116 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1117 _DWApp = g_application_new(_dw_app_id, G_APPLICATION_FLAGS_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1118 if(_DWApp && g_application_register(_DWApp, NULL, NULL))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1119 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1120 /* Creat our notification handler for any notifications */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1121 GSimpleAction *action = g_simple_action_new("notification", G_VARIANT_TYPE_UINT64);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1122
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1123 g_signal_connect(G_OBJECT(action), "activate", G_CALLBACK(_dw_notification_handler), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1124 g_action_map_add_action(G_ACTION_MAP(_DWApp), G_ACTION(action));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1125 g_signal_connect(_DWApp, "activate", G_CALLBACK(_dw_app_activate), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1126 g_application_activate(_DWApp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1127 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1128 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1129 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1130
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1131 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1132 * Runs a message loop for Dynamic Windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1133 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1134 void API dw_main(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1135 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1136 g_main_loop_run(_DWMainLoop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1137 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1138
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1139 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1140 * Causes running dw_main() to return.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1141 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1142 void API dw_main_quit(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1143 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1144 g_main_loop_quit(_DWMainLoop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1145 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1146
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1147 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1148 * Runs a message loop for Dynamic Windows, for a period of milliseconds.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1149 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1150 * milliseconds: Number of milliseconds to run the loop for.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1151 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1152 void API dw_main_sleep(int milliseconds)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1153 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1154 struct timeval tv, start;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1155 pthread_t curr = pthread_self();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1156
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1157 gettimeofday(&start, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1158
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1159 if(_dw_thread == (pthread_t)-1 || _dw_thread == curr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1160 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1161 pthread_t orig = _dw_thread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1162
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1163 gettimeofday(&tv, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1164
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1165 while(((tv.tv_sec - start.tv_sec)*1000) + ((tv.tv_usec - start.tv_usec)/1000) <= milliseconds)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1166 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1167 if(orig == (pthread_t)-1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1168 _dw_thread = curr;
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1169 if(curr == _dw_thread && g_main_context_pending(NULL))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1170 g_main_context_iteration(NULL, FALSE);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1171 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1172 _dw_msleep(1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1173 if(orig == (pthread_t)-1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1174 _dw_thread = orig;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1175 gettimeofday(&tv, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1176 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1177 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1178 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1179 _dw_msleep(milliseconds);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1180 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1181
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1182 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1183 * Processes a single message iteration and returns.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1184 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1185 void API dw_main_iteration(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1186 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1187 pthread_t orig = _dw_thread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1188 pthread_t curr = pthread_self();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1189
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1190 if(_dw_thread == (pthread_t)-1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1191 _dw_thread = curr;
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1192 if(curr == _dw_thread && g_main_context_pending(NULL))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1193 g_main_context_iteration(NULL, FALSE);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1194 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1195 sched_yield();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1196 if(orig == (pthread_t)-1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1197 _dw_thread = orig;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1198 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1199
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1200 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1201 * Free's memory allocated by dynamic windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1202 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1203 * ptr: Pointer to dynamic windows allocated
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1204 * memory to be free()'d.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1205 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1206 void dw_free(void *ptr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1207 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1208 free(ptr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1209 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1210
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1211 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1212 * Allocates and initializes a dialog struct.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1213 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1214 * data: User defined data to be passed to functions.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1215 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1216 DWDialog *dw_dialog_new(void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1217 {
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1218 DWDialog *tmp = calloc(sizeof(DWDialog), 1);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1219
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1220 if(tmp)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1221 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1222 tmp->eve = dw_event_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1223 dw_event_reset(tmp->eve);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1224 tmp->data = data;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1225 tmp->mainloop = g_main_loop_new(NULL, FALSE);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1226 g_main_loop_ref(tmp->mainloop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1227 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1228 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1229 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1230
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1231 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1232 * Accepts a dialog struct and returns the given data to the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1233 * initial called of dw_dialog_wait().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1234 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1235 * dialog: Pointer to a dialog struct aquired by dw_dialog_new).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1236 * result: Data to be returned by dw_dialog_wait().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1237 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1238 int dw_dialog_dismiss(DWDialog *dialog, void *result)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1239 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1240 dialog->result = result;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1241 if(dialog->method)
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1242 g_main_loop_quit(dialog->mainloop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1243 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1244 dw_event_post(dialog->eve);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1245 dialog->done = TRUE;
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1246 return DW_ERROR_NONE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1247 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1248
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1249 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1250 * Accepts a dialog struct waits for dw_dialog_dismiss() to be
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1251 * called by a signal handler with the given dialog struct.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1252 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1253 * dialog: Pointer to a dialog struct aquired by dw_dialog_new).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1254 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1255 void *dw_dialog_wait(DWDialog *dialog)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1256 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1257 void *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1258
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1259 if(!dialog)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1260 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1261
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1262 if(_dw_thread == (pthread_t)-1 || pthread_self() == _dw_thread)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1263 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1264 dialog->method = TRUE;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1265 g_main_loop_run(dialog->mainloop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1266 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1267 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1268 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1269 dialog->method = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1270 dw_event_wait(dialog->eve, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1271 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1272
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1273 dw_event_close(&dialog->eve);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1274 g_main_loop_unref(dialog->mainloop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1275 tmp = dialog->result;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1276 free(dialog);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1277 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1278 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1279
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1280 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1281 * Displays a debug message on the console...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1282 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1283 * format: printf style format string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1284 * ...: Additional variables for use in the format.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1285 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1286 void API dw_debug(const char *format, ...)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1287 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1288 va_list args;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1289 char outbuf[1025] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1290
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1291 va_start(args, format);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1292 vsnprintf(outbuf, 1024, format, args);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1293 va_end(args);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1294
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1295 fprintf(stderr, "%s", outbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1296 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1297
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1298 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1299 * Displays a Message Box with given text and title..
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1300 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1301 * title: The title of the message box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1302 * flags: Defines buttons and icons to display
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1303 * format: printf style format string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1304 * ...: Additional variables for use in the format.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1305 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1306 int dw_messagebox(const char *title, int flags, const char *format, ...)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1307 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1308 GtkMessageType gtkicon = GTK_MESSAGE_OTHER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1309 GtkButtonsType gtkbuttons = GTK_BUTTONS_OK;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1310 GtkWidget *dialog;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1311 int response;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1312 va_list args;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1313 char outbuf[1025] = {0};
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
1314 DWDialog *tmp = dw_dialog_new(NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1315
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1316 va_start(args, format);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1317 vsnprintf(outbuf, 1024, format, args);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1318 va_end(args);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1319
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1320 if(flags & DW_MB_ERROR)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1321 gtkicon = GTK_MESSAGE_ERROR;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1322 else if(flags & DW_MB_WARNING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1323 gtkicon = GTK_MESSAGE_WARNING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1324 else if(flags & DW_MB_INFORMATION)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1325 gtkicon = GTK_MESSAGE_INFO;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1326 else if(flags & DW_MB_QUESTION)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1327 gtkicon = GTK_MESSAGE_QUESTION;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1328
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1329 if(flags & DW_MB_OKCANCEL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1330 gtkbuttons = GTK_BUTTONS_OK_CANCEL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1331 else if(flags & (DW_MB_YESNO | DW_MB_YESNOCANCEL))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1332 gtkbuttons = GTK_BUTTONS_YES_NO;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1333
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1334 dialog = gtk_message_dialog_new(NULL,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1335 GTK_DIALOG_USE_HEADER_BAR |
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1336 GTK_DIALOG_MODAL, gtkicon, gtkbuttons, "%s", title);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1337 gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s", outbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1338 if(flags & DW_MB_YESNOCANCEL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1339 gtk_dialog_add_button(GTK_DIALOG(dialog), "Cancel", GTK_RESPONSE_CANCEL);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
1340 gtk_widget_show(GTK_WIDGET(dialog));
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1341 g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(_dw_dialog_response), (gpointer)tmp);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
1342 response = DW_POINTER_TO_INT(dw_dialog_wait(tmp));
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1343 if(GTK_IS_WINDOW(dialog))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1344 gtk_window_destroy(GTK_WINDOW(dialog));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1345 switch(response)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1346 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1347 case GTK_RESPONSE_OK:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1348 return DW_MB_RETURN_OK;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1349 case GTK_RESPONSE_CANCEL:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1350 return DW_MB_RETURN_CANCEL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1351 case GTK_RESPONSE_YES:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1352 return DW_MB_RETURN_YES;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1353 case GTK_RESPONSE_NO:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1354 return DW_MB_RETURN_NO;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1355 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1356 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1357 /* Handle the destruction of the dialog result */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1358 if(flags & (DW_MB_OKCANCEL | DW_MB_YESNOCANCEL))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1359 return DW_MB_RETURN_CANCEL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1360 else if(flags & DW_MB_YESNO)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1361 return DW_MB_RETURN_NO;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1362 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1363 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1364 return DW_MB_RETURN_OK;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1365 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1366
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1367 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1368 * Minimizes or Iconifies a top-level window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1369 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1370 * handle: The window handle to minimize.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1371 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1372 int dw_window_minimize(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1373 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1374 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1375 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1376
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1377 gtk_window_minimize(GTK_WINDOW(handle));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1378 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1379 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1380
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1381 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1382 * Makes the window topmost.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1383 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1384 * handle: The window handle to make topmost.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1385 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1386 int dw_window_raise(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1387 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1388 /* TODO: See if this is possible in GTK4 */
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1389 return DW_ERROR_UNKNOWN;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1390 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1391
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1392 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1393 * Makes the window bottommost.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1394 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1395 * handle: The window handle to make bottommost.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1396 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1397 int dw_window_lower(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1398 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1399 /* TODO: See if this is possible in GTK4 */
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1400 return DW_ERROR_UNKNOWN;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1401 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1402
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1403 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1404 * Makes the window visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1405 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1406 * handle: The window handle to make visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1407 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1408 int dw_window_show(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1409 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1410 if (!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1411 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1412
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1413 if(GTK_IS_WIDGET(handle))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1414 gtk_widget_show(handle);
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1415 if(GTK_IS_WINDOW(handle))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1416 {
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1417 GtkWidget *defaultitem;
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1418
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1419 gtk_window_unminimize(GTK_WINDOW(handle));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1420 defaultitem = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_defaultitem");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1421 if (defaultitem)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1422 gtk_widget_grab_focus(defaultitem);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1423 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1424 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1425 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1426
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1427 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1428 * Makes the window invisible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1429 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1430 * handle: The window handle to make visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1431 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1432 int dw_window_hide(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1433 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1434 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1435 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1436
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1437 gtk_widget_hide(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1438 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1439 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1440
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1441 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1442 * Destroys a window and all of it's children.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1443 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1444 * handle: The window handle to destroy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1445 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1446 int dw_window_destroy(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1447 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1448 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1449 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1450
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1451 if(GTK_IS_WINDOW(handle))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1452 gtk_window_destroy(GTK_WINDOW(handle));
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1453 else if(GTK_IS_WIDGET(handle))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1454 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1455 GtkWidget *box, *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1456 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_eventbox");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1457
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1458 /* Handle the invisible event box if it exists */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1459 if(eventbox && GTK_IS_WIDGET(eventbox))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1460 handle2 = eventbox;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1461
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1462 /* Check if we are removing a widget from a box */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1463 if((box = gtk_widget_get_parent(handle2)) && GTK_IS_GRID(box))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1464 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1465 /* Get the number of items in the box... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1466 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1467 int boxtype = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxtype"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1468 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1469
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1470 /* Figure out where in the grid this widget is and remove that row/column */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1471 if(boxtype == DW_VERT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1472 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1473 for(z=0;z<boxcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1474 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1475 if(gtk_grid_get_child_at(GTK_GRID(box), 0, z) == handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1476 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1477 gtk_grid_remove_row(GTK_GRID(box), z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1478 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1479 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1480 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1481 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1482 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1483 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1484 for(z=0;z<boxcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1485 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1486 if(gtk_grid_get_child_at(GTK_GRID(box), z, 0) == handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1487 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1488 gtk_grid_remove_column(GTK_GRID(box), z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1489 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1490 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1491 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1492 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1493
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1494 if(boxcount > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1495 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1496 /* Decrease the count by 1 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1497 boxcount--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1498 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1499 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1500 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1501 /* Finally destroy the widget, make sure it is still
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1502 * a valid widget if it got removed from the grid.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1503 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1504 if(GTK_IS_WIDGET(handle2))
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1505 g_object_unref(G_OBJECT(handle2));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1506 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1507 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1508 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1509
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1510 /* Causes entire window to be invalidated and redrawn.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1511 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1512 * handle: Toplevel window handle to be redrawn.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1513 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1514 void dw_window_redraw(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1515 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1516 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1517
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1518 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1519 * Changes a window's parent to newparent.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1520 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1521 * handle: The window handle to destroy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1522 * newparent: The window's new parent window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1523 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1524 void dw_window_reparent(HWND handle, HWND newparent)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1525 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1526 if(GTK_IS_WIDGET(handle) && GTK_IS_WIDGET(newparent))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1527 gtk_widget_set_parent(GTK_WIDGET(handle), GTK_WIDGET(newparent));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1528 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1529
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1530 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1531 * Sets the default font used on text based widgets.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1532 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1533 * fontname: Font name in Dynamic Windows format.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1534 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1535 void API dw_font_set_default(const char *fontname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1536 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1537 char *oldfont = _DWDefaultFont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1538
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1539 _DWDefaultFont = strdup(fontname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1540
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1541 if(oldfont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1542 free(oldfont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1543 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1544
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1545 /* Convert DW style font to CSS syntax (or Pango for older versions):
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1546 * font: font-style font-variant font-weight font-size/line-height font-family
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1547 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1548 char *_convert_font(const char *font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1549 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1550 char *newfont = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1551
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1552 if(font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1553 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1554 char *name = strchr(font, '.');
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1555 char *Italic = strstr(font, " Italic");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1556 char *Bold = strstr(font, " Bold");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1557
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1558 /* Detect Dynamic Windows style font name...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1559 * Format: ##.Fontname
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1560 * and convert to CSS or Pango syntax
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1561 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1562 if(name && (name++) && isdigit(*font))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1563 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1564 int size = atoi(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1565 int len = (Italic ? (Bold ? (Italic > Bold ? (Bold - name) : (Italic - name)) : (Italic - name)) : (Bold ? (Bold - name) : strlen(name)));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1566 char *newname = alloca(len+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1567
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1568 memset(newname, 0, len+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1569 strncpy(newname, name, len);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1570
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1571 newfont = g_strdup_printf("%s normal %s %dpx \"%s\"", Italic ? "italic" : "normal",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1572 Bold ? "bold" : "normal", size, newname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1573 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1574 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1575 return newfont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1576 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1577
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1578 /* Internal functions to convert to GTK3 style CSS */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1579 static void _dw_override_color(GtkWidget *widget, const char *element, GdkRGBA *color)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1580 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1581 gchar *dataname = g_strdup_printf ("_dw_color_%s", element);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1582 GtkCssProvider *provider = g_object_get_data(G_OBJECT(widget), dataname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1583 GtkStyleContext *scontext = gtk_widget_get_style_context(widget);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1584
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1585 /* If we have an old context from a previous override remove it */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1586 if(provider)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1587 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1588 gtk_style_context_remove_provider(scontext, GTK_STYLE_PROVIDER(provider));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1589 g_object_unref(provider);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1590 provider = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1591 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1592
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1593 /* If we have a new color, create a new provider and add it */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1594 if(color)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1595 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1596 gchar *scolor = gdk_rgba_to_string(color);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1597 gchar *css = g_strdup_printf ("* { %s: %s; }", element, scolor);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1598
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1599 provider = gtk_css_provider_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1600 g_free(scolor);
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1601 gtk_css_provider_load_from_data(provider, css, -1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1602 g_free(css);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1603 gtk_style_context_add_provider(scontext, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1604 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1605 g_object_set_data(G_OBJECT(widget), dataname, (gpointer)provider);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1606 g_free(dataname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1607 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1608
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1609 static void _dw_override_font(GtkWidget *widget, const char *font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1610 {
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
1611 #if 0
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1612 GtkCssProvider *provider = g_object_get_data(G_OBJECT(widget), "_dw_font");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1613 GtkStyleContext *scontext = gtk_widget_get_style_context(widget);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1614
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1615 /* If we have an old context from a previous override remove it */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1616 if(provider)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1617 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1618 gtk_style_context_remove_provider(scontext, GTK_STYLE_PROVIDER(provider));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1619 g_object_unref(provider);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1620 provider = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1621 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1622
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1623 /* If we have a new font, create a new provider and add it */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1624 if(font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1625 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1626 gchar *css = g_strdup_printf ("* { font: %s; }", font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1627
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1628 provider = gtk_css_provider_new();
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1629 gtk_css_provider_load_from_data(provider, css, -1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1630 g_free(css);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1631 gtk_style_context_add_provider(scontext, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1632 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1633 g_object_set_data(G_OBJECT(widget), "_dw_font", (gpointer)provider);
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
1634 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1635 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1636
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1637 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1638 * Sets the font used by a specified window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1639 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1640 * handle: The window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1641 * fontname: Name and size of the font in the form "size.fontname"
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1642 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1643 int dw_window_set_font(HWND handle, const char *fontname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1644 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1645 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1646 char *font = _convert_font(fontname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1647 gpointer data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1648
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1649 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1650 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1651 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1652 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1653 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1654 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1655 /* If it is a groupox we want to operate on the frame label */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1656 else if(GTK_IS_FRAME(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1657 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1658 GtkWidget *tmp = gtk_frame_get_label_widget(GTK_FRAME(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1659 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1660 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1661 }
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1662 else if(GTK_IS_COMBO_BOX(handle))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1663 {
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1664 GtkWidget *tmp = gtk_combo_box_get_child(GTK_COMBO_BOX(handle));
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1665 if(tmp)
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1666 handle2 = tmp;
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1667 }
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1668 else if(GTK_IS_BUTTON(handle))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1669 {
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1670 GtkWidget *tmp = gtk_button_get_child(GTK_BUTTON(handle));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1671 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1672 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1673 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1674
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1675 /* Free old font name if one is allocated */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1676 data = g_object_get_data(G_OBJECT(handle2), "_dw_fontname");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1677 g_object_set_data(G_OBJECT(handle2), "_dw_fontname", (gpointer)font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1678 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1679 free(data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1680
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1681 _dw_override_font(handle2, font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1682
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1683 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1684 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1685
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1686 /* Allows the user to choose a font using the system's font chooser dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1687 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1688 * currfont: current font
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1689 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1690 * A malloced buffer with the selected font or NULL on error.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1691 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1692 char * API dw_font_choose(const char *currfont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1693 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1694 GtkFontChooser *fd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1695 char *font = currfont ? strdup(currfont) : NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1696 char *name = font ? strchr(font, '.') : NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1697 char *retfont = NULL;
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
1698 DWDialog *tmp = dw_dialog_new(NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1699
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1700 /* Detect Dynamic Windows style font name...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1701 * Format: ##.Fontname
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1702 * and convert to a Pango name
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1703 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1704 if(name && isdigit(*font))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1705 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1706 int size = atoi(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1707 *name = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1708 name++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1709 sprintf(font, "%s %d", name, size);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1710 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1711
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1712 fd = (GtkFontChooser *)gtk_font_chooser_dialog_new("Choose font", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1713 if(font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1714 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1715 gtk_font_chooser_set_font(fd, font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1716 free(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1717 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1718
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1719 gtk_widget_show(GTK_WIDGET(fd));
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1720 g_signal_connect(G_OBJECT(fd), "response", G_CALLBACK(_dw_dialog_response), (gpointer)tmp);
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1721
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
1722 if(DW_POINTER_TO_INT(dw_dialog_wait(tmp)) == GTK_RESPONSE_OK)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1723 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1724 char *fontname = gtk_font_chooser_get_font(fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1725 if(fontname && (retfont = strdup(fontname)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1726 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1727 int len = strlen(fontname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1728 /* Convert to Dynamic Windows format if we can... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1729 if(len > 0 && isdigit(fontname[len-1]))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1730 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1731 int size, x=len-1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1732
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1733 while(x > 0 && fontname[x] != ' ')
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1734 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1735 x--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1736 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1737 size = atoi(&fontname[x]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1738 /* If we were able to find a valid size... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1739 if(size > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1740 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1741 /* Null terminate after the name...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1742 * and create the Dynamic Windows style font.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1743 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1744 fontname[x] = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1745 snprintf(retfont, len+1, "%d.%s", size, fontname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1746 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1747 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1748 g_free(fontname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1749 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1750 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
1751 if(GTK_IS_WINDOW(fd))
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
1752 gtk_window_destroy(GTK_WINDOW(fd));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1753 return retfont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1754 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1755
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1756 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1757 * Gets the font used by a specified window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1758 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1759 * handle: The window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1760 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1761 char *dw_window_get_font(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1762 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1763 PangoFontDescription *pfont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1764 PangoContext *pcontext;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1765 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1766 char *font;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1767 char *retfont=NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1768
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1769 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1770 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1771 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1772 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1773 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1774 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1775 /* If it is a groupox we want to operate on the frame label */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1776 else if(GTK_IS_FRAME(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1777 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1778 GtkWidget *tmp = gtk_frame_get_label_widget(GTK_FRAME(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1779 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1780 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1781 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1782
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1783 pcontext = gtk_widget_get_pango_context(handle2);
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1784 if(pcontext)
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1785 {
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1786 pfont = pango_context_get_font_description(pcontext);
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1787 if(pfont)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1788 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1789 int len, x;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1790
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1791 font = pango_font_description_to_string( pfont );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1792 retfont = strdup(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1793 len = strlen(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1794 /* Convert to Dynamic Windows format if we can... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1795 if(len > 0 && isdigit(font[len-1]))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1796 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1797 int size;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1798
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1799 x=len-1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1800 while(x > 0 && font[x] != ' ')
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1801 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1802 x--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1803 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1804 size = atoi(&font[x]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1805 /* If we were able to find a valid size... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1806 if(size > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1807 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1808 /* Null terminate after the name...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1809 * and create the Dynamic Windows style font.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1810 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1811 font[x] = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1812 snprintf(retfont, len+1, "%d.%s", size, font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1813 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1814 }
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1815 g_free(font);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1816 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1817 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1818 return retfont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1819 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1820
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1821 void _free_gdk_colors(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1822 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1823 GdkRGBA *old = (GdkRGBA *)g_object_get_data(G_OBJECT(handle), "_dw_foregdk");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1824
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1825 if(old)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1826 free(old);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1827
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1828 old = (GdkRGBA *)g_object_get_data(G_OBJECT(handle), "_dw_backgdk");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1829
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1830 if(old)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1831 free(old);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1832 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1833
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1834 /* Free old color pointers and allocate new ones */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1835 static void _save_gdk_colors(HWND handle, GdkRGBA fore, GdkRGBA back)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1836 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1837 GdkRGBA *foregdk = malloc(sizeof(GdkRGBA));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1838 GdkRGBA *backgdk = malloc(sizeof(GdkRGBA));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1839
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1840 _free_gdk_colors(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1841
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1842 *foregdk = fore;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1843 *backgdk = back;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1844
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1845 g_object_set_data(G_OBJECT(handle), "_dw_foregdk", (gpointer)foregdk);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1846 g_object_set_data(G_OBJECT(handle), "_dw_backgdk", (gpointer)backgdk);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1847 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1848
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1849 static int _set_color(HWND handle, unsigned long fore, unsigned long back)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1850 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1851 /* Remember that each color component in X11 use 16 bit no matter
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1852 * what the destination display supports. (and thus GDK)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1853 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1854 GdkRGBA forecolor = {0}, backcolor = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1855
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1856 if(fore & DW_RGB_COLOR)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1857 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1858 forecolor.alpha = 1.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1859 forecolor.red = (gdouble)DW_RED_VALUE(fore) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1860 forecolor.green = (gdouble)DW_GREEN_VALUE(fore) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1861 forecolor.blue = (gdouble)DW_BLUE_VALUE(fore) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1862 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1863 else if(fore != DW_CLR_DEFAULT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1864 forecolor = _colors[fore];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1865
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1866 _dw_override_color(handle, "color", fore != DW_CLR_DEFAULT ? &forecolor : NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1867
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1868 if(back & DW_RGB_COLOR)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1869 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1870 backcolor.alpha = 1.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1871 backcolor.red = (gdouble)DW_RED_VALUE(back) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1872 backcolor.green = (gdouble)DW_GREEN_VALUE(back) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1873 backcolor.blue = (gdouble)DW_BLUE_VALUE(back) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1874 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1875 else if(back != DW_CLR_DEFAULT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1876 backcolor = _colors[back];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1877
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1878 _dw_override_color(handle, "background-color", back != DW_CLR_DEFAULT ? &backcolor : NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1879
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1880 _save_gdk_colors(handle, forecolor, backcolor);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1881
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1882 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1883 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1884 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1885 * Sets the colors used by a specified window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1886 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1887 * handle: The window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1888 * fore: Foreground color in RGB format.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1889 * back: Background color in RGB format.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1890 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1891 int dw_window_set_color(HWND handle, unsigned long fore, unsigned long back)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1892 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1893 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1894
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1895 if(GTK_IS_SCROLLED_WINDOW(handle) || GTK_IS_BOX(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1896 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1897 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1898 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1899 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1900 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1901 else if(GTK_IS_GRID(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1902 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1903 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_eventbox");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1904 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1905 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1906 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1907 fore = DW_CLR_DEFAULT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1908 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1909 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1910
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1911 _set_color(handle2, fore, back);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1912
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1913 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1914 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1915
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1916 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1917 * Sets the font used by a specified window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1918 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1919 * handle: The window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1920 * border: Size of the window border in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1921 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1922 int dw_window_set_border(HWND handle, int border)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1923 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1924 /* TODO */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1925 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1926 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1927
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1928 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1929 * Captures the mouse input to this window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1930 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1931 * handle: Handle to receive mouse input.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1932 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1933 void dw_window_capture(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1934 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1935 /* TODO: See if this is possible in GTK4 */
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1936 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1937
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1938 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1939 * Changes the appearance of the mouse pointer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1940 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1941 * handle: Handle to widget for which to change.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1942 * cursortype: ID of the pointer you want.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1943 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1944 void dw_window_set_pointer(HWND handle, int pointertype)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1945 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1946 if(pointertype > 65535)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1947 {
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1948 GdkPixbuf *pixbuf = _dw_find_pixbuf(GINT_TO_POINTER(pointertype), NULL, NULL);
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1949 GdkCursor *cursor = gdk_cursor_new_from_texture(gdk_texture_new_for_pixbuf(pixbuf), 0, 0, NULL);
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1950 if(cursor)
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1951 gtk_widget_set_cursor(GTK_WIDGET(handle), cursor);
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1952 }
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1953 if(pointertype == DW_POINTER_ARROW)
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1954 gtk_widget_set_cursor_from_name(GTK_WIDGET(handle), "default");
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1955 else if(pointertype == DW_POINTER_CLOCK)
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1956 gtk_widget_set_cursor_from_name(GTK_WIDGET(handle), "wait");
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1957 else if(pointertype == DW_POINTER_QUESTION)
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1958 gtk_widget_set_cursor_from_name(GTK_WIDGET(handle), "help");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1959 else
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1960 gtk_widget_set_cursor(GTK_WIDGET(handle), NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1961 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1962
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1963 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1964 * Releases previous mouse capture.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1965 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1966 void dw_window_release(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1967 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1968 /* TODO: See if this is possible in GTK4 */
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1969 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1970
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1971 /* Window creation flags that will cause the window to have decorations */
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1972 #define _DW_DECORATION_FLAGS (DW_FCF_CLOSEBUTTON|DW_FCF_SYSMENU|DW_FCF_TITLEBAR|DW_FCF_MINMAX|DW_FCF_SIZEBORDER|DW_FCF_BORDER|DW_FCF_DLGBORDER)
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1973
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1974 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1975 * Create a new Window Frame.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1976 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1977 * owner: The Owner's window handle or HWND_DESKTOP.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1978 * title: The Window title.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1979 * flStyle: Style flags, see the PM reference.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1980 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1981 HWND dw_window_new(HWND hwndOwner, const char *title, unsigned long flStyle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1982 {
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1983 GtkWidget *box = dw_box_new(DW_VERT, 0);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1984 GtkWidget *grid = gtk_grid_new();
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1985 GtkWidget *tmp = gtk_window_new();
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1986
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1987 gtk_widget_show(grid);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1988
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1989 /* Handle the window style flags */
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1990 gtk_window_set_title(GTK_WINDOW(tmp), title);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1991 gtk_window_set_resizable(GTK_WINDOW(tmp), (flStyle & DW_FCF_SIZEBORDER) ? TRUE : FALSE);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1992 /* Either the CLOSEBUTTON or SYSMENU flags should make it deletable */
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1993 gtk_window_set_deletable(GTK_WINDOW(tmp), (flStyle & (DW_FCF_CLOSEBUTTON | DW_FCF_SYSMENU)) ? TRUE : FALSE);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1994 gtk_window_set_decorated(GTK_WINDOW(tmp), (flStyle & _DW_DECORATION_FLAGS) ? TRUE : FALSE);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1995
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1996 gtk_widget_realize(tmp);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1997
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1998 if(flStyle & DW_FCF_FULLSCREEN)
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1999 gtk_window_fullscreen(GTK_WINDOW(tmp));
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2000 else
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2001 {
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2002 if(flStyle & DW_FCF_MAXIMIZE)
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2003 gtk_window_maximize(GTK_WINDOW(tmp));
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2004
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2005 if(flStyle & DW_FCF_MINIMIZE)
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2006 gtk_window_minimize(GTK_WINDOW(tmp));
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2007 }
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2008
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2009 gtk_grid_attach(GTK_GRID(grid), box, 0, 1, 1, 1);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2010 gtk_window_set_child(GTK_WINDOW(tmp), grid);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2011 g_object_set_data(G_OBJECT(tmp), "_dw_boxhandle", (gpointer)box);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2012 g_object_set_data(G_OBJECT(tmp), "_dw_grid", (gpointer)grid);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2013 g_object_set_data(G_OBJECT(tmp), "_dw_style", GINT_TO_POINTER(flStyle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2014 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2015 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2016
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2017 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2018 * Create a new Box to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2019 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2020 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2021 * pad: Number of pixels to pad around the box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2022 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2023 HWND dw_box_new(int type, int pad)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2024 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2025 GtkWidget *tmp;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2026
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2027 tmp = gtk_grid_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2028 g_object_set_data(G_OBJECT(tmp), "_dw_boxtype", GINT_TO_POINTER(type));
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
2029 _dw_widget_set_pad(tmp, pad);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2030 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2031 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2032 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2033
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2034 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2035 * Create a new scrollable Box to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2036 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2037 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2038 * pad: Number of pixels to pad around the box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2039 */
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2040 HWND dw_scrollbox_new(int type, int pad)
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2041 {
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2042 GtkWidget *tmp, *box;
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2043
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2044 tmp = gtk_scrolled_window_new();
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2045 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tmp), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2046
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2047 box = gtk_grid_new();
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2048
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2049 g_object_set_data(G_OBJECT(box), "_dw_boxtype", GINT_TO_POINTER(type));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2050 g_object_set_data(G_OBJECT(tmp), "_dw_boxhandle", (gpointer)box);
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
2051 _dw_widget_set_pad(box, pad);
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
2052
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2053 gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(tmp), box);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2054 g_object_set_data(G_OBJECT(tmp), "_dw_user", box);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2055 gtk_widget_show(box);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2056 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2057
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2058 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2059 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2060
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2061 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2062 * Returns the position of the scrollbar in the scrollbox
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2063 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2064 * handle: Handle to the scrollbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2065 * orient: The vertical or horizontal scrollbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2066 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2067 int dw_scrollbox_get_pos(HWND handle, int orient)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2068 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2069 int val = -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2070 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2071
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2072 if (!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2073 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2074
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2075 if ( orient == DW_HORZ )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2076 adjustment = gtk_scrolled_window_get_hadjustment( GTK_SCROLLED_WINDOW(handle) );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2077 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2078 adjustment = gtk_scrolled_window_get_vadjustment( GTK_SCROLLED_WINDOW(handle) );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2079 if (adjustment)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2080 val = _round_value(gtk_adjustment_get_value(adjustment));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2081 return val;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2082 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2083
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2084 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2085 * Gets the range for the scrollbar in the scrollbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2086 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2087 * handle: Handle to the scrollbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2088 * orient: The vertical or horizontal scrollbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2089 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2090 int API dw_scrollbox_get_range(HWND handle, int orient)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2091 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2092 int range = -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2093 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2094
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2095 if (!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2096 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2097
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2098 if ( orient == DW_HORZ )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2099 adjustment = gtk_scrolled_window_get_hadjustment( GTK_SCROLLED_WINDOW(handle) );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2100 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2101 adjustment = gtk_scrolled_window_get_vadjustment( GTK_SCROLLED_WINDOW(handle) );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2102 if (adjustment)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2103 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2104 range = _round_value(gtk_adjustment_get_upper(adjustment));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2105 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2106 return range;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2107 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2108
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2109 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2110 * Create a new Group Box to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2111 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2112 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2113 * pad: Number of pixels to pad around the box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2114 * title: Text to be displayined in the group outline.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2115 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2116 HWND dw_groupbox_new(int type, int pad, const char *title)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2117 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2118 GtkWidget *tmp, *frame;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2119
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2120 frame = gtk_frame_new(NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2121 gtk_frame_set_label(GTK_FRAME(frame), title && *title ? title : NULL);
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
2122
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2123 tmp = gtk_grid_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2124 g_object_set_data(G_OBJECT(tmp), "_dw_boxtype", GINT_TO_POINTER(type));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2125 g_object_set_data(G_OBJECT(frame), "_dw_boxhandle", (gpointer)tmp);
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
2126 _dw_widget_set_pad(tmp, pad);
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2127 gtk_frame_set_child(GTK_FRAME(frame), tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2128 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2129 gtk_widget_show(frame);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2130 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2131 dw_window_set_font(frame, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2132 return frame;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2133 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2134
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2135 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2136 * Create a bitmap object to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2137 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2138 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2139 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2140 HWND dw_bitmap_new(unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2141 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2142 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2143
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2144 tmp = gtk_image_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2145 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2146 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2147 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2148 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2149
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2150 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2151 * Create a notebook object to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2152 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2153 * id: An ID to be used for getting the resource from the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2154 * resource file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2155 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2156 HWND dw_notebook_new(unsigned long id, int top)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2157 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2158 GtkWidget *tmp, **pagearray = calloc(sizeof(GtkWidget *), 256);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2159
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2160 tmp = gtk_notebook_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2161 if(top)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2162 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tmp), GTK_POS_TOP);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2163 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2164 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tmp), GTK_POS_BOTTOM);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2165 gtk_notebook_set_scrollable(GTK_NOTEBOOK(tmp), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2166 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2167 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2168 g_object_set_data(G_OBJECT(tmp), "_dw_pagearray", (gpointer)pagearray);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2169 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2170 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2171
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2172 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2173 * Create a menu object to be popped up.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2174 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2175 * id: An ID to be used for getting the resource from the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2176 * resource file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2177 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2178 HMENUI dw_menu_new(unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2179 {
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2180 GMenu *menu = g_menu_new();
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2181 HMENUI tmp = gtk_popover_menu_new_from_model_full(G_MENU_MODEL(menu), GTK_POPOVER_MENU_NESTED);
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2182
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2183 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2184 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2185 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2186
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2187 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2188 * Create a menubar on a window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2189 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2190 * location: Handle of a window frame to be attached to.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2191 * If there is no box already packed into the "location", the menu will not appear
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2192 * so tell the user.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2193 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2194 HMENUI dw_menubar_new(HWND location)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2195 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2196 HMENUI tmp = 0;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2197 GtkWidget *box;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2198
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2199 if(GTK_IS_WINDOW(location) &&
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2200 (box = GTK_WIDGET(g_object_get_data(G_OBJECT(location), "_dw_grid"))))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2201 {
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2202 GMenu *menu = g_menu_new();
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2203 /* If there is an existing menu bar, remove it */
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2204 GtkWidget *oldmenu = GTK_WIDGET(g_object_get_data(G_OBJECT(location), "_dw_menubar"));
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2205
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2206 if(oldmenu && GTK_IS_WIDGET(oldmenu))
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2207 gtk_grid_remove(GTK_GRID(box), tmp);
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2208
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2209 /* Create a new menu bar */
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2210 tmp = gtk_popover_menu_bar_new_from_model(G_MENU_MODEL(menu));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2211 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2212 /* Save pointers to each other */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2213 g_object_set_data(G_OBJECT(location), "_dw_menubar", (gpointer)tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2214 g_object_set_data(G_OBJECT(tmp), "_dw_window", (gpointer)location);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2215 gtk_grid_attach(GTK_GRID(box), tmp, 0, 0, 1, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2216 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2217 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2218 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2219
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2220 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2221 * Destroys a menu created with dw_menubar_new or dw_menu_new.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2222 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2223 * menu: Handle of a menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2224 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2225 void dw_menu_destroy(HMENUI *menu)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2226 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2227 if(menu && *menu)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2228 {
2284
3361ce6070ce Add DW_FEATURE_TASK_BAR to the feature tests, for taskbar icon support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2282
diff changeset
2229 GtkWidget *window = NULL;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2230
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2231 /* If it is a menu bar, try to delete the reference to it */
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2232 if(GTK_IS_POPOVER_MENU_BAR(*menu) &&
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2233 (window = GTK_WIDGET(g_object_get_data(G_OBJECT(*menu), "_dw_window"))))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2234 g_object_set_data(G_OBJECT(window), "_dw_menubar", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2235 /* Actually destroy the menu */
2284
3361ce6070ce Add DW_FEATURE_TASK_BAR to the feature tests, for taskbar icon support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2282
diff changeset
2236 if(GTK_IS_WIDGET(*menu) && window)
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2237 {
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2238 GtkWidget *box = GTK_WIDGET(g_object_get_data(G_OBJECT(window), "_dw_grid"));
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2239 if(box && GTK_IS_GRID(box))
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2240 gtk_grid_remove(GTK_GRID(box), GTK_WIDGET(*menu));
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2241 else
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2242 g_object_unref(G_OBJECT(*menu));
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2243 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2244 *menu = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2245 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2246 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2247
2286
2d282d8fe911 GTK4: Change to how the action name is created, don't use the menu label...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2284
diff changeset
2248 char _dw_removetilde(char *dest, const char *src)
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2249 {
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2250 int z, cur=0;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2251 char accel = '\0';
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2252
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2253 for(z=0;z<strlen(src);z++)
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2254 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2255 if(src[z] == '~')
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2256 {
2286
2d282d8fe911 GTK4: Change to how the action name is created, don't use the menu label...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2284
diff changeset
2257 dest[cur] = '_';
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2258 accel = src[z+1];
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2259 }
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2260 else
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2261 dest[cur] = src[z];
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2262 cur++;
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2263 }
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2264 dest[cur] = 0;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2265 return accel;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2266 }
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2267
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2268
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2269 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2270 * Adds a menuitem or submenu to an existing menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2271 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2272 * menu: The handle to the existing menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2273 * title: The title text on the menu item to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2274 * id: An ID to be used for message passing.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2275 * flags: Extended attributes to set on the menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2276 * end: If TRUE memu is positioned at the end of the menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2277 * check: If TRUE menu is "check"able.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2278 * submenu: Handle to an existing menu to be a submenu or NULL.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2279 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2280 HWND dw_menu_append_item(HMENUI menu, const char *title, unsigned long id, unsigned long flags, int end, int check, HMENUI submenu)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2281 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2282 GSimpleAction *action = NULL;
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2283 GMenuItem *tmphandle = NULL;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2284 GMenuModel *menumodel;
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2285 char *temptitle = alloca(strlen(title)+1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2286 int submenucount;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2287
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2288 if(!menu)
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2289 return 0;
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2290
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2291 if(GTK_IS_POPOVER_MENU_BAR(menu))
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2292 menumodel = gtk_popover_menu_bar_get_menu_model(GTK_POPOVER_MENU_BAR(menu));
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2293 else
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2294 menumodel = gtk_popover_menu_get_menu_model(GTK_POPOVER_MENU(menu));
2286
2d282d8fe911 GTK4: Change to how the action name is created, don't use the menu label...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2284
diff changeset
2295 _dw_removetilde(temptitle, title);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2296 submenucount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menu), "_dw_submenucount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2297
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2298 if (strlen(temptitle) == 0)
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2299 tmphandle = g_menu_item_new_section(NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2300 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2301 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2302 char tempbuf[101] = {0};
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2303
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2304 if(submenu)
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2305 {
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2306 GMenuModel *submenumodel;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2307
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2308 if(GTK_IS_POPOVER_MENU_BAR(submenu))
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2309 submenumodel = gtk_popover_menu_bar_get_menu_model(GTK_POPOVER_MENU_BAR(submenu));
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2310 else
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2311 submenumodel = gtk_popover_menu_get_menu_model(GTK_POPOVER_MENU(submenu));
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2312
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2313 snprintf(tempbuf, 100, "_dw_submenu%d", submenucount);
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2314 submenucount++;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2315 tmphandle = g_menu_item_new_submenu(temptitle, submenumodel);
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2316 g_object_set_data(G_OBJECT(menu), tempbuf, (gpointer)submenu);
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2317 g_object_set_data(G_OBJECT(menu), "_dw_submenucount", GINT_TO_POINTER(submenucount));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2318 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2319 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2320 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2321 char numbuf[25] = {0};
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2322
2286
2d282d8fe911 GTK4: Change to how the action name is created, don't use the menu label...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2284
diff changeset
2323 snprintf(tempbuf, 100, "menu.%llu-%lu", DW_POINTER_TO_ULONGLONG(menu), id);
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2324 action = g_simple_action_new(tempbuf, NULL);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2325 g_object_ref(G_OBJECT(action));
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2326 tmphandle=g_menu_item_new(temptitle, tempbuf);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2327 snprintf(numbuf, 24, "%lu", id);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2328 g_object_set_data(G_OBJECT(menu), numbuf, (gpointer)tmphandle);
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2329 g_object_set_data(G_OBJECT(menu), "_dw_action", (gpointer)action);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2330 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2331 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2332
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2333 if(end)
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2334 g_menu_append_item(G_MENU(menumodel), tmphandle);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2335 else
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2336 g_menu_prepend_item(G_MENU(menumodel), tmphandle);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2337
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2338 g_object_set_data(G_OBJECT(tmphandle), "_dw_id", GINT_TO_POINTER(id));
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2339
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2340 if(action)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2341 g_simple_action_set_enabled(action, (flags & DW_MIS_DISABLED) ? FALSE : TRUE);
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2342 return (HWND)tmphandle;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2343 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2344
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2345 GMenuItem *_dw_find_submenu_id(HMENUI start, const char *name)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2346 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2347 GMenuItem *tmp;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2348 int z, submenucount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(start), "_dw_submenucount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2349
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2350 if((tmp = g_object_get_data(G_OBJECT(start), name)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2351 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2352
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2353 for(z=0;z<submenucount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2354 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2355 char tempbuf[101] = {0};
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2356 GMenuItem *menuitem;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2357 HMENUI submenu;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2358
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2359 snprintf(tempbuf, 100, "_dw_submenu%d", z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2360
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2361 if((submenu = g_object_get_data(G_OBJECT(start), tempbuf)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2362 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2363 if((menuitem = _dw_find_submenu_id(submenu, name)))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2364 return menuitem;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2365 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2366 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2367 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2368 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2369
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2370 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2371 * Sets the state of a menu item check.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2372 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2373 * menu: The handle the the existing menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2374 * id: Menuitem id.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2375 * check: TRUE for checked FALSE for not checked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2376 * deprecated: use dw_menu_item_set_state()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2377 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2378 void dw_menu_item_set_check(HMENUI menu, unsigned long id, int check)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2379 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2380 #if 0
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2381 char numbuf[25] = {0};
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2382 GMenuItem *tmphandle;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2383
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2384 if(!menu)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2385 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2386
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2387 snprintf(numbuf, 24, "%lu", id);
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2388 tmphandle = _dw_find_submenu_id(menu, numbuf);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2389
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2390 if(tmphandle && G_IS_MENU_ITEM(tmphandle))
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2391 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2392 GSimpleAction *action = g_object_get_data(G_OBJECT(tmphandle), "_dw_action");
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2393
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2394 if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(tmphandle)) != check)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2395 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(tmphandle), check);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2396 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2397 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2398 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2399
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2400 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2401 * Sets the state of a menu item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2402 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2403 * menu: The handle the the existing menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2404 * id: Menuitem id.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2405 * state: TRUE for checked FALSE for not checked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2406 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2407 void dw_menu_item_set_state(HMENUI menu, unsigned long id, unsigned long state)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2408 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2409 char numbuf[25] = {0};
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2410 GMenuItem *tmphandle;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2411
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2412 if(!menu)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2413 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2414
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2415 snprintf(numbuf, 24, "%lu", id);
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2416 tmphandle = _dw_find_submenu_id(menu, numbuf);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2417
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2418 if(tmphandle && G_IS_MENU_ITEM(tmphandle))
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2419 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2420 GSimpleAction *action = g_object_get_data(G_OBJECT(tmphandle), "_dw_action");
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2421
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2422 #if 0
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2423 if((state & DW_MIS_CHECKED) || (state & DW_MIS_UNCHECKED))
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2424 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2425 int check = 0;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2426
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2427 if(state & DW_MIS_CHECKED)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2428 check = 1;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2429
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2430 if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(tmphandle)) != check)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2431 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(tmphandle), check);
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2432 }
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2433 #endif
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2434 if((state & DW_MIS_ENABLED) || (state & DW_MIS_DISABLED))
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2435 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2436 if(state & DW_MIS_ENABLED)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2437 g_simple_action_set_enabled(action, TRUE);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2438 else
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2439 g_simple_action_set_enabled(action, FALSE);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2440 }
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2441 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2442 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2443
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2444 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2445 * Deletes the menu item specified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2446 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2447 * menu: The handle to the menu in which the item was appended.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2448 * id: Menuitem id.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2449 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2450 * DW_ERROR_NONE (0) on success or DW_ERROR_UNKNOWN on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2451 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2452 int API dw_menu_delete_item(HMENUI menu, unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2453 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2454 int ret = DW_ERROR_UNKNOWN;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2455 char numbuf[25] = {0};
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2456 GMenuItem *tmphandle;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2457
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2458 if(!menu)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2459 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2460
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2461 snprintf(numbuf, 24, "%lu", id);
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2462 tmphandle = _dw_find_submenu_id(menu, numbuf);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2463
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2464 if(tmphandle && G_IS_MENU_ITEM(tmphandle))
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2465 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2466 /* g_menu_remove(menu, position); */
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2467 g_object_unref(G_OBJECT(tmphandle));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2468 g_object_set_data(G_OBJECT(menu), numbuf, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2469 ret = DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2470 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2471 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2472 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2473
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2474 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2475 * Pops up a context menu at given x and y coordinates.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2476 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2477 * menu: The handle the the existing menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2478 * parent: Handle to the window initiating the popup.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2479 * x: X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2480 * y: Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2481 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2482 void dw_menu_popup(HMENUI *menu, HWND parent, int x, int y)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2483 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2484 if(menu && *menu && GTK_IS_WIDGET(*menu))
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2485 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2486 GtkWidget *popover = gtk_popover_new();
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2487
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2488 gtk_popover_set_child(GTK_POPOVER(popover), GTK_WIDGET(*menu));
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2489 gtk_popover_set_offset(GTK_POPOVER(popover), x, y);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2490 gtk_popover_set_autohide(GTK_POPOVER(popover), TRUE);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2491 gtk_popover_popup(GTK_POPOVER(popover));
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2492 *menu = NULL;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2493 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2494 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2495
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2496
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2497 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2498 * Returns the current X and Y coordinates of the mouse pointer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2499 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2500 * x: Pointer to variable to store X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2501 * y: Pointer to variable to store Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2502 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2503 void dw_pointer_query_pos(long *x, long *y)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2504 {
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
2505 GdkSeat *seat = gdk_display_get_default_seat(gdk_display_get_default());
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
2506 GdkDevice *mouse = gdk_seat_get_pointer(seat);
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
2507 double dx, dy;
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
2508
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
2509 gdk_device_get_surface_at_position(mouse, &dx, &dy);
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
2510
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2511 if(x)
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
2512 *x = (long)dx;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2513 if(y)
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
2514 *y = (long)dy;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2515 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2516
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2517 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2518 * Sets the X and Y coordinates of the mouse pointer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2519 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2520 * x: X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2521 * y: Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2522 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2523 void dw_pointer_set_pos(long x, long y)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2524 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2525 /* TODO: See if this is possible in GTK4 */
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2526 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2527
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2528 #define _DW_TREE_CONTAINER 1
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2529 #define _DW_TREE_TREE 2
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2530 #define _DW_TREE_LISTBOX 3
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2531
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2532 GtkWidget *_tree_create(unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2533 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2534 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2535
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2536 tmp = gtk_scrolled_window_new();
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2537 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (tmp),
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2538 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2539
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2540 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2541 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2542 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2543 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2544
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2545 GtkWidget *_tree_setup(GtkWidget *tmp, GtkTreeModel *store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2546 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2547 GtkWidget *tree = gtk_tree_view_new_with_model(store);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2548 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree), FALSE);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2549 gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(tmp), tree);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2550 g_object_set_data(G_OBJECT(tmp), "_dw_user", (gpointer)tree);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2551 return tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2552 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2553
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2554 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2555 * Create a container object to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2556 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2557 * id: An ID to be used for getting the resource from the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2558 * resource file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2559 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2560 HWND dw_container_new(unsigned long id, int multi)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2561 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2562 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2563
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2564 if(!(tmp = _tree_create(id)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2565 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2566 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2567 g_object_set_data(G_OBJECT(tmp), "_dw_multi_sel", GINT_TO_POINTER(multi));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2568 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2569 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2570
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2571 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2572 * Create a tree object to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2573 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2574 * id: An ID to be used for getting the resource from the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2575 * resource file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2576 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2577 HWND dw_tree_new(ULONG id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2578 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2579 GtkWidget *tmp, *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2580 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2581 GtkTreeViewColumn *col;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2582 GtkCellRenderer *rend;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2583 GtkTreeSelection *sel;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2584
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2585 if(!(tmp = _tree_create(id)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2586 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2587 store = gtk_tree_store_new(4, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_POINTER, G_TYPE_POINTER);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2588 tree = _tree_setup(tmp, GTK_TREE_MODEL(store));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2589 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2590 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2591 col = gtk_tree_view_column_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2592
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2593 rend = gtk_cell_renderer_pixbuf_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2594 gtk_tree_view_column_pack_start(col, rend, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2595 gtk_tree_view_column_add_attribute(col, rend, "pixbuf", 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2596 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2597 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2598 gtk_tree_view_column_add_attribute(col, rend, "text", 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2599
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2600 gtk_tree_view_append_column(GTK_TREE_VIEW (tree), col);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2601 gtk_tree_view_set_expander_column(GTK_TREE_VIEW(tree), col);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2602 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2603
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2604 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2605 gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2606 gtk_widget_show(tree);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2607
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2608 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2609 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2610 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2611 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2612
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2613
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2614 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2615 * Create a new static text window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2616 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2617 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2618 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2619 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2620 HWND dw_text_new(const char *text, unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2621 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2622 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2623
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2624 tmp = gtk_label_new(text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2625
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2626 /* Left and centered */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2627 gtk_label_set_xalign(GTK_LABEL(tmp), 0.0f);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2628 gtk_label_set_yalign(GTK_LABEL(tmp), 0.5f);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2629 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2630 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2631 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2632 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2633 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2634 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2635
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2636 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2637 * Create a new status text window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2638 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2639 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2640 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2641 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2642 HWND dw_status_text_new(const char *text, ULONG id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2643 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2644 GtkWidget *tmp, *frame;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2645
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2646 frame = gtk_frame_new(NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2647 tmp = gtk_label_new(text);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2648 gtk_frame_set_child(GTK_FRAME(frame), tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2649 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2650 gtk_widget_show(frame);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2651
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2652 /* Left and centered */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2653 gtk_label_set_xalign(GTK_LABEL(tmp), 0.0f);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2654 gtk_label_set_yalign(GTK_LABEL(tmp), 0.5f);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2655 g_object_set_data(G_OBJECT(frame), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2656 g_object_set_data(G_OBJECT(frame), "_dw_label", (gpointer)tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2657 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2658 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2659 return frame;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2660 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2661
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2662 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2663 * Create a new Multiline Editbox window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2664 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2665 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2666 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2667 HWND dw_mle_new(unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2668 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2669 GtkWidget *tmp, *tmpbox;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2670
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2671 tmpbox = gtk_scrolled_window_new();
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2672 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tmpbox),
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2673 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2674 tmp = gtk_text_view_new();
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2675 gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(tmpbox), tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2676 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), GTK_WRAP_WORD);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2677
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2678 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2679 g_object_set_data(G_OBJECT(tmpbox), "_dw_user", (gpointer)tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2680 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2681 gtk_widget_show(tmpbox);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2682 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2683 dw_window_set_font(tmpbox, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2684 return tmpbox;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2685 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2686
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2687 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2688 * Create a new Entryfield window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2689 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2690 * text: The default text to be in the entryfield widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2691 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2692 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2693 HWND dw_entryfield_new(const char *text, unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2694 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2695 GtkWidget *tmp;
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2696 GtkEntryBuffer *buffer = gtk_entry_buffer_new(text, -1);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2697
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2698 tmp = gtk_entry_new_with_buffer(buffer);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2699
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2700 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2701 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2702
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2703 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2704 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2705 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2706 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2707
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2708 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2709 * Create a new Entryfield (password) window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2710 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2711 * text: The default text to be in the entryfield widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2712 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2713 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2714 HWND dw_entryfield_password_new(const char *text, ULONG id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2715 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2716 GtkWidget *tmp;
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2717 GtkEntryBuffer *buffer = gtk_entry_buffer_new(text, -1);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2718
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2719 tmp = gtk_entry_new_with_buffer(buffer);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2720
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2721 gtk_entry_set_visibility(GTK_ENTRY(tmp), FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2722
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2723 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2724 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2725
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2726 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2727 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2728 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2729 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2730
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2731 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2732 * Create a new Combobox window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2733 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2734 * text: The default text to be in the combpbox widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2735 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2736 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2737 HWND dw_combobox_new(const char *text, unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2738 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2739 GtkWidget *tmp;
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2740 GtkEntryBuffer *buffer;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2741 GtkListStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2742
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2743 store = gtk_list_store_new(1, G_TYPE_STRING);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2744 tmp = gtk_combo_box_new_with_model_and_entry(GTK_TREE_MODEL(store));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2745 gtk_combo_box_set_entry_text_column(GTK_COMBO_BOX(tmp), 0);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2746 buffer = gtk_entry_get_buffer(GTK_ENTRY(gtk_combo_box_get_child(GTK_COMBO_BOX(tmp))));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2747 gtk_entry_buffer_set_max_length(buffer, 0);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2748 gtk_entry_buffer_set_text(buffer, text, -1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2749 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2750 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_COMBOBOX));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2751 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2752 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2753 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2754 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2755 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2756
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2757 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2758 * Create a new button window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2759 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2760 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2761 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2762 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2763 HWND dw_button_new(const char *text, unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2764 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2765 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2766
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2767 tmp = gtk_button_new_with_label(text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2768 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2769 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2770 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2771 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2772 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2773 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2774
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2775 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2776 * Create a new bitmap button window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2777 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2778 * text: Bubble help text to be displayed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2779 * id: An ID of a bitmap in the resource file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2780 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2781 HWND dw_bitmapbutton_new(const char *text, unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2782 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2783 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2784 GtkWidget *bitmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2785
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2786 tmp = gtk_button_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2787 bitmap = dw_bitmap_new(id);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2788
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2789 if(bitmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2790 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2791 dw_window_set_bitmap(bitmap, id, NULL);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2792 gtk_button_set_child(GTK_BUTTON(tmp), bitmap);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2793 g_object_set_data(G_OBJECT(tmp), "_dw_bitmap", bitmap);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2794 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2795 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2796 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2797 gtk_widget_set_tooltip_text(tmp, text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2798 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2799 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2800 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2801
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2802 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2803 * Create a new bitmap button window (widget) to be packed from a file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2804 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2805 * label_text: Text to display on button. TBD when Windows works
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2806 * text: Bubble help text to be displayed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2807 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2808 * filename: Name of the file, omit extention to have
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2809 * DW pick the appropriate file extension.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2810 * (BMP on OS/2 or Windows, XPM on Unix)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2811 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2812 HWND dw_bitmapbutton_new_from_file(const char *text, unsigned long id, const char *filename)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2813 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2814 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2815 GtkWidget *bitmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2816
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2817 /* Create a new button */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2818 tmp = gtk_button_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2819 /* Now on to the image stuff */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2820 bitmap = dw_bitmap_new(id);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2821 if(bitmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2822 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2823 dw_window_set_bitmap(bitmap, 0, filename);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2824 gtk_button_set_child(GTK_BUTTON(tmp), bitmap);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2825 g_object_set_data(G_OBJECT(tmp), "_dw_bitmap", bitmap);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2826 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2827 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2828 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2829 gtk_widget_set_tooltip_text(tmp, text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2830 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2831 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2832 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2833
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2834 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2835 * Create a new bitmap button window (widget) to be packed from data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2836 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2837 * text: Bubble help text to be displayed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2838 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2839 * data: Raw data of image.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2840 * (BMP on OS/2 or Windows, XPM on Unix)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2841 * len: Length of raw data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2842 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2843 HWND dw_bitmapbutton_new_from_data(const char *text, unsigned long id, const char *data, int len)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2844 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2845 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2846 GtkWidget *bitmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2847
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2848 tmp = gtk_button_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2849 bitmap = dw_bitmap_new(id);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2850
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2851 if(bitmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2852 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2853 dw_window_set_bitmap_from_data(bitmap, 0, data, len);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2854 gtk_button_set_child(GTK_BUTTON(tmp), bitmap);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2855 g_object_set_data(G_OBJECT(tmp), "_dw_bitmap", bitmap);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2856 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2857 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2858 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2859 gtk_widget_set_tooltip_text(tmp, text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2860 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2861 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2862 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2863
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2864 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2865 * Create a new spinbutton window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2866 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2867 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2868 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2869 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2870 HWND dw_spinbutton_new(const char *text, unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2871 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2872 GtkAdjustment *adj;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2873 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2874
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2875 adj = (GtkAdjustment *)gtk_adjustment_new((float)atoi(text), -65536.0, 65536.0, 1.0, 5.0, 0.0);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2876 tmp = gtk_spin_button_new(adj, 0, 0);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2877 gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(tmp), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2878 gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(tmp), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2879 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2880 g_object_set_data(G_OBJECT(tmp), "_dw_adjustment", (gpointer)adj);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2881 g_object_set_data(G_OBJECT(adj), "_dw_spinbutton", (gpointer)tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2882 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2883 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2884 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2885 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2886 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2887
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2888 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2889 * Create a new radiobutton window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2890 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2891 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2892 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2893 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2894 HWND dw_radiobutton_new(const char *text, ULONG id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2895 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2896 GtkWidget *tmp = gtk_toggle_button_new_with_label(text);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2897 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2898 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2899
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2900 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2901 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2902 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2903 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2904
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2905 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2906 * Create a new slider window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2907 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2908 * vertical: TRUE or FALSE if slider is vertical.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2909 * increments: Number of increments available.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2910 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2911 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2912 HWND dw_slider_new(int vertical, int increments, ULONG id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2913 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2914 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2915 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2916
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2917 adjustment = (GtkAdjustment *)gtk_adjustment_new(0, 0, (gfloat)increments, 1, 1, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2918 tmp = gtk_scale_new(vertical ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, adjustment);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2919 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2920 gtk_scale_set_draw_value(GTK_SCALE(tmp), 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2921 gtk_scale_set_digits(GTK_SCALE(tmp), 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2922 g_object_set_data(G_OBJECT(tmp), "_dw_adjustment", (gpointer)adjustment);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2923 g_object_set_data(G_OBJECT(adjustment), "_dw_slider", (gpointer)tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2924 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2925 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2926 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2927
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2928 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2929 * Create a new scrollbar window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2930 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2931 * vertical: TRUE or FALSE if scrollbar is vertical.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2932 * increments: Number of increments available.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2933 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2934 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2935 HWND dw_scrollbar_new(int vertical, ULONG id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2936 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2937 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2938 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2939
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2940 adjustment = (GtkAdjustment *)gtk_adjustment_new(0, 0, 0, 1, 1, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2941 tmp = gtk_scrollbar_new(vertical ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, adjustment);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2942 gtk_widget_set_can_focus(tmp, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2943 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2944 g_object_set_data(G_OBJECT(tmp), "_dw_adjustment", (gpointer)adjustment);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2945 g_object_set_data(G_OBJECT(adjustment), "_dw_scrollbar", (gpointer)tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2946 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2947 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2948 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2949
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2950 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2951 * Create a new percent bar window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2952 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2953 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2954 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2955 HWND dw_percent_new(unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2956 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2957 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2958
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2959 tmp = gtk_progress_bar_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2960 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2961 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2962 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2963 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2964
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2965 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2966 * Create a new checkbox window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2967 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2968 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2969 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2970 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2971 HWND dw_checkbox_new(const char *text, unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2972 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2973 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2974
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2975 tmp = gtk_check_button_new_with_label(text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2976 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2977 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2978 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2979 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2980 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2981 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2982
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2983 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2984 * Create a new listbox window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2985 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2986 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2987 * multi: Multiple select TRUE or FALSE.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2988 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2989 HWND dw_listbox_new(unsigned long id, int multi)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2990 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2991 GtkWidget *tmp, *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2992 GtkListStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2993 GtkTreeViewColumn *col;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2994 GtkCellRenderer *rend;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2995 GtkTreeSelection *sel;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2996
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2997 if(!(tmp = _tree_create(id)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2998 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2999 store = gtk_list_store_new(1, G_TYPE_STRING);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3000 tree = _tree_setup(tmp, GTK_TREE_MODEL(store));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3001 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3002 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3003
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3004 col = gtk_tree_view_column_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3005 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3006 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3007 gtk_tree_view_column_add_attribute(col, rend, "text", 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3008
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3009 gtk_tree_view_append_column(GTK_TREE_VIEW (tree), col);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3010 gtk_tree_view_set_expander_column(GTK_TREE_VIEW(tree), col);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3011 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3012
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3013 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3014 if(multi)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3015 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3016 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3017 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3018 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3019 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3020 gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3021 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3022 gtk_widget_show(tree);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3023 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3024 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3025 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3026 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3027
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3028 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3029 * Sets the icon used for a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3030 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3031 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3032 * id: An ID to be used to specify the icon.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3033 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3034 void dw_window_set_icon(HWND handle, HICN icon)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3035 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3036 /* TODO: figure out how to do this for GTK4 */
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3037 #if GTK3
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3038 GdkPixbuf *icon_pixbuf;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3039
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
3040 icon_pixbuf = _dw_find_pixbuf(icon, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3041
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3042 if(icon_pixbuf)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3043 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3044 gtk_window_set_icon_name(
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3045 }
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3046 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3047 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3048
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3049 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3050 * Sets the bitmap used for a given static window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3051 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3052 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3053 * id: An ID to be used to specify the icon,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3054 * (pass 0 if you use the filename param)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3055 * filename: a path to a file (Bitmap on OS/2 or
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3056 * Windows and a pixmap on Unix, pass
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3057 * NULL if you use the id param)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3058 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3059 void dw_window_set_bitmap(HWND handle, unsigned long id, const char *filename)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3060 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3061 GdkPixbuf *tmp = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3062 int found_ext = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3063 int i;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3064
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3065 if(!id && !filename)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3066 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3067
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3068 if(id)
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
3069 tmp = _dw_find_pixbuf((HICN)id, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3070 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3071 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3072 char *file = alloca(strlen(filename) + 6);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3073
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3074 if(!file)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3075 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3076
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3077 strcpy(file, filename);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3078
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3079 /* check if we can read from this file (it exists and read permission) */
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3080 if(access(file, 04) != 0)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3081 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3082 /* Try with various extentions */
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3083 for(i=0; i<NUM_EXTS; i++)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3084 {
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3085 strcpy(file, filename);
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3086 strcat(file, image_exts[i]);
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3087 if(access(file, 04) == 0)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3088 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3089 found_ext = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3090 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3091 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3092 }
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3093 if(found_ext == 0)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3094 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3095 }
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3096 tmp = gdk_pixbuf_new_from_file(file, NULL);
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3097 }
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3098
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3099 if(tmp)
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3100 {
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3101 if(GTK_IS_BUTTON(handle))
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3102 {
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3103 GtkWidget *pixmap = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_bitmap");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3104 if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3105 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3106 gtk_image_set_from_pixbuf(GTK_IMAGE(pixmap), tmp);
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3107 g_object_set_data(G_OBJECT(pixmap), "_dw_pixbuf", tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3108 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3109 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3110 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3111 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3112 gtk_image_set_from_pixbuf(GTK_IMAGE(handle), tmp);
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3113 g_object_set_data(G_OBJECT(handle), "_dw_pixbuf", tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3114 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3115 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3116 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3117
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3118 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3119 * Sets the bitmap used for a given static window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3120 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3121 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3122 * id: An ID to be used to specify the icon,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3123 * (pass 0 if you use the filename param)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3124 * data: the image data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3125 * Bitmap on Windows and a pixmap on Unix, pass
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3126 * NULL if you use the id param)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3127 * len: length of data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3128 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3129 void dw_window_set_bitmap_from_data(HWND handle, unsigned long id, const char *data, int len)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3130 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3131 GdkPixbuf *tmp = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3132
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3133 if(!id && !data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3134 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3135
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3136 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3137 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3138 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3139 * A real hack; create a temporary file and write the contents
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3140 * of the data to the file
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3141 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3142 char template[] = "/tmp/dwpixmapXXXXXX";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3143 int written = -1, fd = mkstemp(template);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3144
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3145 if(fd != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3146 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3147 written = write(fd, data, len);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3148 close(fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3149 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3150 /* Bail if we couldn't write full file */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3151 if(fd == -1 || written != len)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3152 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3153
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3154 tmp = gdk_pixbuf_new_from_file(template, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3155 /* remove our temporary file */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3156 unlink(template);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3157 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3158 else if (id)
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
3159 tmp = _dw_find_pixbuf((HICN)id, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3160
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3161 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3162 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3163 if(GTK_IS_BUTTON(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3164 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3165 GtkWidget *pixmap = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_bitmap");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3166
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3167 if(pixmap)
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3168 {
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3169 gtk_image_set_from_pixbuf(GTK_IMAGE(pixmap), tmp);
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3170 g_object_set_data(G_OBJECT(pixmap), "_dw_pixbuf", tmp);
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3171 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3172 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3173 else
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3174 {
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3175 gtk_image_set_from_pixbuf(GTK_IMAGE(handle), tmp);
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3176 g_object_set_data(G_OBJECT(handle), "_dw_pixbuf", tmp);
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3177 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3178 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3179 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3180
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3181 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3182 * Sets the text used for a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3183 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3184 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3185 * text: The text associated with a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3186 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3187 void dw_window_set_text(HWND handle, const char *text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3188 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3189 if(GTK_IS_ENTRY(handle))
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3190 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3191 GtkEntryBuffer *buffer = gtk_entry_get_buffer(GTK_ENTRY(handle));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3192 if(buffer)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3193 gtk_entry_buffer_set_text(buffer, text, -1);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3194 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3195 else if(GTK_IS_COMBO_BOX(handle))
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3196 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3197 GtkWidget *entry = gtk_combo_box_get_child(GTK_COMBO_BOX(handle));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3198 GtkEntryBuffer *buffer = gtk_entry_get_buffer(GTK_ENTRY(entry));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3199 if(buffer)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3200 gtk_entry_buffer_set_text(buffer, text, -1);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3201 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3202 else if(GTK_IS_LABEL(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3203 gtk_label_set_text(GTK_LABEL(handle), text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3204 else if(GTK_IS_BUTTON(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3205 gtk_button_set_label(GTK_BUTTON(handle), text);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3206 else if(GTK_IS_WINDOW(handle))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3207 gtk_window_set_title(GTK_WINDOW(handle), text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3208 else if (GTK_IS_FRAME(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3209 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3210 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3211 * This is a groupbox or status_text
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3212 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3213 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_label");
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3214 if (tmp && GTK_IS_LABEL(tmp))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3215 gtk_label_set_text(GTK_LABEL(tmp), text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3216 else /* assume groupbox */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3217 gtk_frame_set_label(GTK_FRAME(handle), text && *text ? text : NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3218 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3219 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3220
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3221 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3222 * Sets the text used for a given window's floating bubble help.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3223 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3224 * handle: Handle to the window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3225 * bubbletext: The text in the floating bubble tooltip.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3226 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3227 void API dw_window_set_tooltip(HWND handle, const char *bubbletext)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3228 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3229 if(bubbletext && *bubbletext)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3230 gtk_widget_set_tooltip_text(handle, bubbletext);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3231 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3232 gtk_widget_set_has_tooltip(handle, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3233 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3234
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3235 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3236 * Gets the text used for a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3237 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3238 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3239 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3240 * text: The text associsated with a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3241 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3242 char *dw_window_get_text(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3243 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3244 const char *possible = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3245
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3246 if(GTK_IS_ENTRY(handle))
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3247 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3248 GtkEntryBuffer *buffer = gtk_entry_get_buffer(GTK_ENTRY(handle));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3249 possible = gtk_entry_buffer_get_text(buffer);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3250 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3251 else if(GTK_IS_COMBO_BOX(handle))
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3252 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3253 GtkWidget *entry = gtk_combo_box_get_child(GTK_COMBO_BOX(handle));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3254 GtkEntryBuffer *buffer = gtk_entry_get_buffer(GTK_ENTRY(entry));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3255 possible = gtk_entry_buffer_get_text(buffer);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3256 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3257 else if(GTK_IS_LABEL(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3258 possible = gtk_label_get_text(GTK_LABEL(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3259
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3260 return strdup(possible ? possible : "");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3261 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3262
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3263 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3264 * Disables given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3265 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3266 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3267 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3268 void dw_window_disable(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3269 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3270 gtk_widget_set_sensitive(handle, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3271 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3272
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3273 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3274 * Enables given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3275 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3276 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3277 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3278 void dw_window_enable(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3279 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3280 gtk_widget_set_sensitive(handle, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3281 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3282
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3283 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3284 * Gets the child window handle with specified ID.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3285 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3286 * handle: Handle to the parent window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3287 * id: Integer ID of the child.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3288 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3289 HWND API dw_window_from_id(HWND handle, int id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3290 {
2275
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3291 if(handle && GTK_WIDGET(handle) && id)
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3292 {
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3293 GtkWidget *widget = gtk_widget_get_first_child(GTK_WIDGET(handle));
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3294
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3295 while(widget)
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3296 {
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3297 if(id == GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "_dw_id")))
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3298 return widget;
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3299 widget = gtk_widget_get_next_sibling(GTK_WIDGET(widget));
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3300 }
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3301 }
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
3302 return 0;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3303 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3304
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3305 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3306 * Adds text to an MLE box and returns the current point.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3307 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3308 * handle: Handle to the MLE to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3309 * buffer: Text buffer to be imported.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3310 * startpoint: Point to start entering text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3311 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3312 unsigned int dw_mle_import(HWND handle, const char *buffer, int startpoint)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3313 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3314 unsigned int tmppoint = startpoint;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3315
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3316 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3317 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3318 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3319
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3320 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3321 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3322 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3323 GtkTextIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3324
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3325 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3326 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, startpoint);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3327 gtk_text_buffer_place_cursor(tbuffer, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3328 gtk_text_buffer_insert_at_cursor(tbuffer, buffer, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3329 tmppoint = (startpoint > -1 ? startpoint : 0) + strlen(buffer);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3330 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3331 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3332 return tmppoint;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3333 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3334
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3335 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3336 * Grabs text from an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3337 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3338 * handle: Handle to the MLE to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3339 * buffer: Text buffer to be exported. MUST allow for trailing nul character.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3340 * startpoint: Point to start grabbing text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3341 * length: Amount of text to be grabbed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3342 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3343 void dw_mle_export(HWND handle, char *buffer, int startpoint, int length)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3344 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3345 gchar *text;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3346
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3347 /* force the return value to nul in case the following tests fail */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3348 if(buffer)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3349 buffer[0] = '\0';
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3350 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3351 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3352 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3353
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3354 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3355 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3356 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3357 GtkTextIter start, end;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3358
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3359 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3360 gtk_text_buffer_get_iter_at_offset(tbuffer, &start, startpoint);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3361 gtk_text_buffer_get_iter_at_offset(tbuffer, &end, startpoint + length);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3362 text = gtk_text_iter_get_text(&start, &end);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3363 if(text) /* Should this get freed? */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3364 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3365 if(buffer)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3366 strcpy(buffer, text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3367 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3368 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3369 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3370 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3371
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3372 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3373 * Obtains information about an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3374 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3375 * handle: Handle to the MLE to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3376 * bytes: A pointer to a variable to return the total bytes.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3377 * lines: A pointer to a variable to return the number of lines.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3378 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3379 void dw_mle_get_size(HWND handle, unsigned long *bytes, unsigned long *lines)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3380 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3381 if(bytes)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3382 *bytes = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3383 if(lines)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3384 *lines = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3385
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3386 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3387 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3388 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3389
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3390 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3391 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3392 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3393
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3394 if(bytes)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3395 *bytes = gtk_text_buffer_get_char_count(buffer);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3396 if(lines)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3397 *lines = gtk_text_buffer_get_line_count(buffer);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3398 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3399 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3400 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3401
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3402 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3403 * Deletes text from an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3404 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3405 * handle: Handle to the MLE to be deleted from.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3406 * startpoint: Point to start deleting text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3407 * length: Amount of text to be deleted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3408 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3409 void dw_mle_delete(HWND handle, int startpoint, int length)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3410 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3411 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3412 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3413 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3414
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3415 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3416 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3417 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3418 GtkTextIter start, end;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3419
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3420 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3421 gtk_text_buffer_get_iter_at_offset(tbuffer, &start, startpoint);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3422 gtk_text_buffer_get_iter_at_offset(tbuffer, &end, startpoint + length);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3423 gtk_text_buffer_delete(tbuffer, &start, &end);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3424 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3425 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3426 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3427
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3428 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3429 * Clears all text from an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3430 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3431 * handle: Handle to the MLE to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3432 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3433 void dw_mle_clear(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3434 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3435 int length;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3436
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3437 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3438 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3439 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3440
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3441 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3442 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3443 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3444
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3445 length = -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3446 gtk_text_buffer_set_text(buffer, "", length);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3447 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3448 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3449 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3450
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3451 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3452 * Sets the visible line of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3453 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3454 * handle: Handle to the MLE.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3455 * line: Line to be visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3456 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3457 void dw_mle_set_visible(HWND handle, int line)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3458 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3459 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3460 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3461 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3462
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3463 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3464 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3465 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3466 GtkTextIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3467 GtkTextMark *mark = (GtkTextMark *)g_object_get_data(G_OBJECT(handle), "_dw_mark");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3468
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3469 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3470 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3471 gtk_text_iter_set_line(&iter, line);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3472 if(!mark)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3473 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3474 mark = gtk_text_buffer_create_mark(tbuffer, NULL, &iter, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3475 g_object_set_data(G_OBJECT(handle), "_dw_mark", (gpointer)mark);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3476 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3477 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3478 gtk_text_buffer_move_mark(tbuffer, mark, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3479 gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(tmp), mark,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3480 0, FALSE, 0, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3481 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3482 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3483 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3484
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3485 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3486 * Sets the editablity of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3487 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3488 * handle: Handle to the MLE.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3489 * state: TRUE if it can be edited, FALSE for readonly.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3490 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3491 void dw_mle_set_editable(HWND handle, int state)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3492 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3493 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3494 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3495 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3496
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3497 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3498 gtk_text_view_set_editable(GTK_TEXT_VIEW(tmp), state);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3499 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3500 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3501
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3502 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3503 * Sets the word wrap state of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3504 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3505 * handle: Handle to the MLE.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3506 * state: TRUE if it wraps, FALSE if it doesn't.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3507 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3508 void dw_mle_set_word_wrap(HWND handle, int state)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3509 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3510 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3511 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3512 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3513
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3514 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3515 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), state ? GTK_WRAP_WORD : GTK_WRAP_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3516 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3517 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3518
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3519 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3520 * Sets the word auto complete state of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3521 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3522 * handle: Handle to the MLE.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3523 * state: Bitwise combination of DW_MLE_COMPLETE_TEXT/DASH/QUOTE
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3524 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3525 void dw_mle_set_auto_complete(HWND handle, int state)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3526 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3527 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3528
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3529 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3530 * Sets the current cursor position of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3531 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3532 * handle: Handle to the MLE to be positioned.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3533 * point: Point to position cursor.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3534 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3535 void dw_mle_set_cursor(HWND handle, int point)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3536 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3537 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3538 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3539 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3540
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3541 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3542 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3543 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3544 GtkTextIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3545 GtkTextMark *mark = (GtkTextMark *)g_object_get_data(G_OBJECT(handle), "_dw_mark");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3546
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3547 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3548 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, point);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3549 if(!mark)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3550 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3551 mark = gtk_text_buffer_create_mark(tbuffer, NULL, &iter, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3552 g_object_set_data(G_OBJECT(handle), "_dw_mark", (gpointer)mark);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3553 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3554 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3555 gtk_text_buffer_move_mark(tbuffer, mark, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3556 gtk_text_buffer_place_cursor(tbuffer, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3557 gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(tmp), mark,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3558 0, FALSE, 0, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3559 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3560 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3561 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3562
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3563 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3564 * Finds text in an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3565 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3566 * handle: Handle to the MLE to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3567 * text: Text to search for.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3568 * point: Start point of search.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3569 * flags: Search specific flags.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3570 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3571 int dw_mle_search(HWND handle, const char *text, int point, unsigned long flags)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3572 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3573 int retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3574
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3575 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3576 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3577 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3578
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3579 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3580 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3581 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3582 GtkTextIter iter, found;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3583
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3584 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3585 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, point);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3586 gtk_text_iter_forward_search(&iter, text, GTK_TEXT_SEARCH_TEXT_ONLY, &found, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3587 retval = gtk_text_iter_get_offset(&found);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3588 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3589 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3590 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3591 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3592
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3593 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3594 * Stops redrawing of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3595 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3596 * handle: Handle to the MLE to freeze.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3597 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3598 void dw_mle_freeze(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3599 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3600 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3601
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3602 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3603 * Resumes redrawing of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3604 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3605 * handle: Handle to the MLE to thaw.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3606 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3607 void dw_mle_thaw(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3608 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3609 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3610
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3611 /* Internal function to update the progress bar
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3612 * while in an indeterminate state.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3613 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3614 gboolean _dw_update_progress_bar(gpointer data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3615 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3616 if(g_object_get_data(G_OBJECT(data), "_dw_alive"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3617 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3618 gtk_progress_bar_pulse(GTK_PROGRESS_BAR(data));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3619 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3620 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3621 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3622 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3623
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3624 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3625 * Sets the percent bar position.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3626 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3627 * handle: Handle to the percent bar to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3628 * position: Position of the percent bar withing the range.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3629 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3630 void dw_percent_set_pos(HWND handle, unsigned int position)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3631 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3632 if(position == DW_PERCENT_INDETERMINATE)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3633 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3634 /* Check if we are indeterminate already */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3635 if(!g_object_get_data(G_OBJECT(handle), "_dw_alive"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3636 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3637 /* If not become indeterminate... and start a timer to continue */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3638 gtk_progress_bar_pulse(GTK_PROGRESS_BAR(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3639 g_object_set_data(G_OBJECT(handle), "_dw_alive", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3640 g_timeout_add(100, (GSourceFunc)_dw_update_progress_bar, (gpointer)handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3641 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3642 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3643 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3644 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3645 /* Cancel the existing timer if one is there */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3646 g_object_set_data(G_OBJECT(handle), "_dw_alive", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3647 /* Set the position like normal */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3648 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(handle), (gfloat)position/100);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3649 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3650 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3651
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3652 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3653 * Returns the position of the slider.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3654 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3655 * handle: Handle to the slider to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3656 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3657 unsigned int dw_slider_get_pos(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3658 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3659 int val = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3660 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3661
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3662 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3663 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3664
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3665 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3666 if(adjustment)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3667 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3668 int max = _round_value(gtk_adjustment_get_upper(adjustment)) - 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3669 int thisval = _round_value(gtk_adjustment_get_value(adjustment));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3670
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3671 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(handle)) == GTK_ORIENTATION_VERTICAL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3672 val = max - thisval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3673 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3674 val = thisval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3675 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3676 return val;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3677 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3678
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3679 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3680 * Sets the slider position.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3681 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3682 * handle: Handle to the slider to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3683 * position: Position of the slider withing the range.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3684 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3685 void dw_slider_set_pos(HWND handle, unsigned int position)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3686 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3687 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3688
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3689 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3690 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3691
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3692 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3693 if(adjustment)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3694 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3695 int max = _round_value(gtk_adjustment_get_upper(adjustment)) - 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3696
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3697 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(handle)) == GTK_ORIENTATION_VERTICAL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3698 gtk_adjustment_set_value(adjustment, (gfloat)(max - position));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3699 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3700 gtk_adjustment_set_value(adjustment, (gfloat)position);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3701 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3702 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3703
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3704 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3705 * Returns the position of the scrollbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3706 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3707 * handle: Handle to the scrollbar to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3708 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3709 unsigned int dw_scrollbar_get_pos(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3710 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3711 int val = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3712 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3713
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3714 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3715 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3716
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3717 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3718 if(adjustment)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3719 val = _round_value(gtk_adjustment_get_value(adjustment));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3720 return val;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3721 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3722
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3723 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3724 * Sets the scrollbar position.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3725 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3726 * handle: Handle to the scrollbar to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3727 * position: Position of the scrollbar withing the range.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3728 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3729 void dw_scrollbar_set_pos(HWND handle, unsigned int position)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3730 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3731 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3732
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3733 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3734 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3735
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3736 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3737 if(adjustment)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3738 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3739 g_object_set_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3740 gtk_adjustment_set_value(adjustment, (gfloat)position);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3741 g_object_set_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event", GINT_TO_POINTER(0));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3742 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3743 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3744
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3745 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3746 * Sets the scrollbar range.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3747 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3748 * handle: Handle to the scrollbar to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3749 * range: Maximum range value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3750 * visible: Visible area relative to the range.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3751 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3752 void API dw_scrollbar_set_range(HWND handle, unsigned int range, unsigned int visible)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3753 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3754 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3755
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3756 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3757 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3758
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3759 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3760 if(adjustment)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3761 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3762 gtk_adjustment_set_upper(adjustment, (gdouble)range);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3763 gtk_adjustment_set_page_increment(adjustment,(gdouble)visible);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3764 gtk_adjustment_set_page_size(adjustment, (gdouble)visible);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3765 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3766 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3767
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3768 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3769 * Sets the spinbutton value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3770 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3771 * handle: Handle to the spinbutton to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3772 * position: Current value of the spinbutton.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3773 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3774 void dw_spinbutton_set_pos(HWND handle, long position)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3775 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3776 gtk_spin_button_set_value(GTK_SPIN_BUTTON(handle), (gfloat)position);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3777 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3778
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3779 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3780 * Sets the spinbutton limits.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3781 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3782 * handle: Handle to the spinbutton to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3783 * position: Current value of the spinbutton.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3784 * position: Current value of the spinbutton.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3785 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3786 void dw_spinbutton_set_limits(HWND handle, long upper, long lower)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3787 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3788 long curval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3789 GtkAdjustment *adj;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3790
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3791 curval = dw_spinbutton_get_pos(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3792 adj = (GtkAdjustment *)gtk_adjustment_new((gfloat)curval, (gfloat)lower, (gfloat)upper, 1.0, 5.0, 0.0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3793 gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(handle), adj);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3794 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3795 * Set our internal relationships between the adjustment and the spinbutton
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3796 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3797 g_object_set_data(G_OBJECT(handle), "_dw_adjustment", (gpointer)adj);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3798 g_object_set_data(G_OBJECT(adj), "_dw_spinbutton", (gpointer)handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3799 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3800
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3801 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3802 * Sets the entryfield character limit.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3803 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3804 * handle: Handle to the spinbutton to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3805 * limit: Number of characters the entryfield will take.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3806 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3807 void dw_entryfield_set_limit(HWND handle, ULONG limit)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3808 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3809 gtk_entry_set_max_length(GTK_ENTRY(handle), limit);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3810 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3811
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3812 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3813 * Returns the current value of the spinbutton.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3814 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3815 * handle: Handle to the spinbutton to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3816 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3817 long dw_spinbutton_get_pos(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3818 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3819 return (long)gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3820 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3821
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3822 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3823 * Returns the state of the checkbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3824 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3825 * handle: Handle to the checkbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3826 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3827 int dw_checkbox_get(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3828 {
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
3829 if(GTK_IS_TOGGLE_BUTTON(handle))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
3830 return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(handle));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
3831 return gtk_check_button_get_active(GTK_CHECK_BUTTON(handle));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3832 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3833
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3834 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3835 * Sets the state of the checkbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3836 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3837 * handle: Handle to the checkbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3838 * value: TRUE for checked, FALSE for unchecked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3839 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3840 void dw_checkbox_set(HWND handle, int value)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3841 {
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
3842 if(GTK_IS_TOGGLE_BUTTON(handle))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
3843 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(handle), value);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
3844 else
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
3845 gtk_check_button_set_active(GTK_CHECK_BUTTON(handle), value);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3846 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3847
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3848 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3849 * Inserts an item into a tree window (widget) after another item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3850 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3851 * handle: Handle to the tree to be inserted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3852 * item: Handle to the item to be positioned after.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3853 * title: The text title of the entry.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3854 * icon: Handle to coresponding icon.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3855 * parent: Parent handle or 0 if root.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3856 * itemdata: Item specific data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3857 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3858 HTREEITEM dw_tree_insert_after(HWND handle, HTREEITEM item, const char *title, HICN icon, HTREEITEM parent, void *itemdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3859 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3860 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3861 GtkTreeIter *iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3862 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3863 GdkPixbuf *pixbuf;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3864 HTREEITEM retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3865
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3866 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3867 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3868
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3869 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3870 && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3871 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3872 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3873 iter = (GtkTreeIter *)malloc(sizeof(GtkTreeIter));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3874
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
3875 pixbuf = _dw_find_pixbuf(icon, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3876
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3877 gtk_tree_store_insert_after(store, iter, (GtkTreeIter *)parent, (GtkTreeIter *)item);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3878 gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, 2, itemdata, 3, iter, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3879 retval = (HTREEITEM)iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3880 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3881 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3882 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3883
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3884 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3885 * Inserts an item into a tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3886 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3887 * handle: Handle to the tree to be inserted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3888 * title: The text title of the entry.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3889 * icon: Handle to coresponding icon.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3890 * parent: Parent handle or 0 if root.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3891 * itemdata: Item specific data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3892 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3893 HTREEITEM dw_tree_insert(HWND handle, const char *title, HICN icon, HTREEITEM parent, void *itemdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3894 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3895 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3896 GtkTreeIter *iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3897 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3898 GdkPixbuf *pixbuf;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3899 HTREEITEM retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3900
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3901 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3902 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3903
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3904 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3905 && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3906 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3907 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3908 iter = (GtkTreeIter *)malloc(sizeof(GtkTreeIter));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3909
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
3910 pixbuf = _dw_find_pixbuf(icon, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3911
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3912 gtk_tree_store_append (store, iter, (GtkTreeIter *)parent);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3913 gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, 2, itemdata, 3, iter, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3914 retval = (HTREEITEM)iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3915 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3916 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3917 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3918
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3919 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3920 * Sets the text and icon of an item in a tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3921 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3922 * handle: Handle to the tree containing the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3923 * item: Handle of the item to be modified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3924 * title: The text title of the entry.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3925 * icon: Handle to coresponding icon.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3926 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3927 void dw_tree_item_change(HWND handle, HTREEITEM item, const char *title, HICN icon)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3928 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3929 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3930 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3931 GdkPixbuf *pixbuf;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3932
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3933 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3934 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3935
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3936 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3937 && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3938 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3939 {
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
3940 pixbuf = _dw_find_pixbuf(icon, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3941
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3942 gtk_tree_store_set(store, (GtkTreeIter *)item, 0, title, 1, pixbuf, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3943 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3944 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3945
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3946 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3947 * Sets the item data of a tree item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3948 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3949 * handle: Handle to the tree containing the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3950 * item: Handle of the item to be modified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3951 * itemdata: User defined data to be associated with item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3952 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3953 void dw_tree_item_set_data(HWND handle, HTREEITEM item, void *itemdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3954 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3955 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3956 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3957
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3958 if(!handle || !item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3959 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3960
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3961 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3962 && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3963 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3964 gtk_tree_store_set(store, (GtkTreeIter *)item, 2, itemdata, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3965 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3966
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3967 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3968 * Gets the text an item in a tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3969 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3970 * handle: Handle to the tree containing the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3971 * item: Handle of the item to be modified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3972 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3973 char * API dw_tree_get_title(HWND handle, HTREEITEM item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3974 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3975 char *text = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3976 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3977 GtkTreeModel *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3978
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3979 if(!handle || !item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3980 return text;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3981
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3982 tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3983
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3984 if(tree && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3985 (store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3986 gtk_tree_model_get(store, (GtkTreeIter *)item, _DW_DATA_TYPE_STRING, &text, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3987 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3988 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3989 char *temp = text;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3990 text = strdup(temp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3991 g_free(temp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3992 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3993 return text;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3994 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3995
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3996 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3997 * Gets the text an item in a tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3998 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3999 * handle: Handle to the tree containing the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4000 * item: Handle of the item to be modified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4001 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4002 HTREEITEM API dw_tree_get_parent(HWND handle, HTREEITEM item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4003 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4004 HTREEITEM parent = (HTREEITEM)0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4005 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4006 GtkTreeModel *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4007
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4008 if(!handle || !item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4009 return parent;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4010
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4011 tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4012
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4013 if(tree && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4014 (store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4015 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4016 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4017
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4018 if(gtk_tree_model_iter_parent(store, &iter, (GtkTreeIter *)item))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4019 gtk_tree_model_get(store, &iter, 3, &parent, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4020 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4021 return parent;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4022 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4023
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4024 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4025 * Gets the item data of a tree item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4026 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4027 * handle: Handle to the tree containing the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4028 * item: Handle of the item to be modified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4029 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4030 void *dw_tree_item_get_data(HWND handle, HTREEITEM item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4031 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4032 void *ret = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4033 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4034 GtkTreeModel *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4035
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4036 if(!handle || !item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4037 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4038
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4039 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4040 && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4041 (store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4042 gtk_tree_model_get(store, (GtkTreeIter *)item, 2, &ret, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4043 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4044 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4045
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4046 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4047 * Sets this item as the active selection.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4048 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4049 * handle: Handle to the tree window (widget) to be selected.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4050 * item: Handle to the item to be selected.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4051 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4052 void dw_tree_item_select(HWND handle, HTREEITEM item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4053 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4054 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4055 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4056
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4057 if(!handle || !item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4058 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4059
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4060 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4061 && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4062 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4063 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4064 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4065 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4066
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4067 gtk_tree_view_set_cursor(GTK_TREE_VIEW(tree), path, NULL, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4068 gtk_tree_selection_select_iter(sel, (GtkTreeIter *)item);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4069 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4070 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4071 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4072
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4073 static void _dw_recursive_free(GtkTreeModel *store, GtkTreeIter parent)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4074 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4075 void *data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4076 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4077
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4078 gtk_tree_model_get(store, &parent, 3, &data, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4079 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4080 free(data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4081 gtk_tree_store_set(GTK_TREE_STORE(store), &parent, 3, NULL, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4082
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4083 if(gtk_tree_model_iter_children(store, &iter, &parent))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4084 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4085 do {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4086 _dw_recursive_free(GTK_TREE_MODEL(store), iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4087 } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4088 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4089 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4090
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4091 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4092 * Removes all nodes from a tree.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4093 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4094 * handle: Handle to the window (widget) to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4095 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4096 void dw_tree_clear(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4097 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4098 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4099 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4100
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4101 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4102 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4103
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4104 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4105 && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4106 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4107 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4108 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4109
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4110 if(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4111 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4112 do {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4113 _dw_recursive_free(GTK_TREE_MODEL(store), iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4114 } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4115 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4116 gtk_tree_store_clear(store);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4117 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4118 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4119
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4120 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4121 * Expands a node on a tree.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4122 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4123 * handle: Handle to the tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4124 * item: Handle to node to be expanded.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4125 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4126 void dw_tree_item_expand(HWND handle, HTREEITEM item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4127 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4128 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4129 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4130
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4131 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4132 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4133
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4134 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4135 && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4136 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4137 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4138 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4139 gtk_tree_view_expand_row(GTK_TREE_VIEW(tree), path, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4140 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4141 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4142 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4143
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4144 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4145 * Collapses a node on a tree.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4146 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4147 * handle: Handle to the tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4148 * item: Handle to node to be collapsed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4149 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4150 void dw_tree_item_collapse(HWND handle, HTREEITEM item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4151 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4152 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4153 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4154
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4155 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4156 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4157
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4158 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4159 && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4160 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4161 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4162 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4163 gtk_tree_view_collapse_row(GTK_TREE_VIEW(tree), path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4164 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4165 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4166 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4167
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4168 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4169 * Removes a node from a tree.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4170 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4171 * handle: Handle to the window (widget) to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4172 * item: Handle to node to be deleted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4173 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4174 void dw_tree_item_delete(HWND handle, HTREEITEM item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4175 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4176 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4177 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4178
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4179 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4180 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4181
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4182 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4183 && GTK_IS_TREE_VIEW(tree) &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4184 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4185 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4186 gtk_tree_store_remove(store, (GtkTreeIter *)item);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4187 free(item);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4188 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4189 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4190
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4191 #define _DW_CONTAINER_STORE_EXTRA 2
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4192
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4193 static int _dw_container_setup(HWND handle, unsigned long *flags, char **titles, int count, int separator, int extra)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4194 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4195 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4196 char numbuf[25] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4197 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4198 GtkListStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4199 GtkTreeViewColumn *col;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4200 GtkCellRenderer *rend;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4201 GtkTreeSelection *sel;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4202 GType *array = calloc(count + _DW_CONTAINER_STORE_EXTRA + 1, sizeof(GType));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4203
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4204 /* Save some of the info so it is easily accessible */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4205 g_object_set_data(G_OBJECT(handle), "_dw_cont_columns", GINT_TO_POINTER(count));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4206 g_object_set_data(G_OBJECT(handle), "_dw_cont_extra", GINT_TO_POINTER(extra));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4207
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4208 /* First param is row title */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4209 array[0] = G_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4210 /* Second param is row data */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4211 array[1] = G_TYPE_POINTER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4212 array[2] = G_TYPE_POINTER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4213 /* First loop... create array to create the store */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4214 for(z=0;z<count;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4215 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4216 if(z == 0 && flags[z] & DW_CFA_STRINGANDICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4217 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4218 array[_DW_CONTAINER_STORE_EXTRA] = GDK_TYPE_PIXBUF;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4219 array[_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4220 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4221 else if(flags[z] & DW_CFA_BITMAPORICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4222 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4223 array[z+_DW_CONTAINER_STORE_EXTRA+1] = GDK_TYPE_PIXBUF;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4224 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4225 else if(flags[z] & DW_CFA_STRING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4226 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4227 array[z+_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4228 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4229 else if(flags[z] & DW_CFA_ULONG)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4230 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4231 array[z+_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_ULONG;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4232 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4233 else if(flags[z] & DW_CFA_TIME)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4234 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4235 array[z+_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4236 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4237 else if(flags[z] & DW_CFA_DATE)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4238 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4239 array[z+_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4240 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4241 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4242 /* Create the store and then the tree */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4243 store = gtk_list_store_newv(count + _DW_CONTAINER_STORE_EXTRA + 1, array);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4244 tree = _tree_setup(handle, GTK_TREE_MODEL(store));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4245 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4246 /* Second loop... create the columns */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4247 for(z=0;z<count;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4248 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4249 snprintf(numbuf, 24, "_dw_cont_col%d", z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4250 g_object_set_data(G_OBJECT(tree), numbuf, GINT_TO_POINTER(flags[z]));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4251 col = gtk_tree_view_column_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4252 rend = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4253 void **params = calloc(sizeof(void *), 3);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4254
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4255 if(z == 0 && flags[z] & DW_CFA_STRINGANDICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4256 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4257 rend = gtk_cell_renderer_pixbuf_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4258 gtk_tree_view_column_pack_start(col, rend, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4259 gtk_tree_view_column_add_attribute(col, rend, "pixbuf", _DW_CONTAINER_STORE_EXTRA);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4260 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4261 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4262 gtk_tree_view_column_add_attribute(col, rend, "text", _DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4263 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4264 else if(flags[z] & DW_CFA_BITMAPORICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4265 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4266 rend = gtk_cell_renderer_pixbuf_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4267 gtk_tree_view_column_pack_start(col, rend, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4268 gtk_tree_view_column_add_attribute(col, rend, "pixbuf", z+_DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4269 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4270 else if(flags[z] & DW_CFA_STRING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4271 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4272 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4273 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4274 gtk_tree_view_column_add_attribute(col, rend, "text", z+_DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4275 gtk_tree_view_column_set_resizable(col, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4276 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4277 else if(flags[z] & DW_CFA_ULONG)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4278 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4279 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4280 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4281 gtk_tree_view_column_add_attribute(col, rend, "text", z+_DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4282 gtk_tree_view_column_set_resizable(col, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4283 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4284 else if(flags[z] & DW_CFA_TIME)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4285 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4286 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4287 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4288 gtk_tree_view_column_add_attribute(col, rend, "text", z+_DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4289 gtk_tree_view_column_set_resizable(col, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4290 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4291 else if(flags[z] & DW_CFA_DATE)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4292 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4293 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4294 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4295 gtk_tree_view_column_add_attribute(col, rend, "text", z+_DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4296 gtk_tree_view_column_set_resizable(col, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4297 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4298 g_object_set_data(G_OBJECT(col), "_dw_column", GINT_TO_POINTER(z));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4299 params[2] = tree;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
4300 g_signal_connect_data(G_OBJECT(col), "clicked", G_CALLBACK(_dw_column_click_event), (gpointer)params, _dw_signal_disconnect, 0);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4301 gtk_tree_view_column_set_title(col, titles[z]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4302 if(flags[z] & DW_CFA_RIGHT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4303 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4304 gtk_tree_view_column_set_alignment(col, 1.0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4305 if(rend)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4306 gtk_cell_renderer_set_alignment(rend, 1.0, 0.5);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4307 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4308 else if(flags[z] & DW_CFA_CENTER)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4309 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4310 gtk_tree_view_column_set_alignment(col, 0.5);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4311 if(rend)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4312 gtk_cell_renderer_set_alignment(rend, 0.5, 0.5);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4313 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4314 gtk_tree_view_append_column(GTK_TREE_VIEW (tree), col);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4315 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4316 /* Finish up */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4317 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4318 gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(tree), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4319 gtk_tree_view_set_rubber_banding(GTK_TREE_VIEW(tree), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4320 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4321 if(g_object_get_data(G_OBJECT(handle), "_dw_multi_sel"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4322 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4323 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4324 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4325 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4326 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4327 gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4328 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4329 gtk_widget_show(tree);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4330 free(array);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4331 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4332 dw_window_set_font(handle, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4333 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4334 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4335
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4336 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4337 * Sets up the container columns.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4338 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4339 * handle: Handle to the container to be configured.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4340 * flags: An array of unsigned longs with column flags.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4341 * titles: An array of strings with column text titles.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4342 * count: The number of columns (this should match the arrays).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4343 * separator: The column number that contains the main separator.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4344 * (this item may only be used in OS/2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4345 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4346 int dw_container_setup(HWND handle, unsigned long *flags, char **titles, int count, int separator)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4347 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4348 return _dw_container_setup(handle, flags, titles, count, separator, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4349 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4350
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4351 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4352 * Configures the main filesystem columnn title for localization.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4353 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4354 * handle: Handle to the container to be configured.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4355 * title: The title to be displayed in the main column.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4356 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4357 void API dw_filesystem_set_column_title(HWND handle, const char *title)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4358 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4359 char *newtitle = strdup(title ? title : "");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4360
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4361 g_object_set_data(G_OBJECT(handle), "_dw_coltitle", newtitle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4362 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4363
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4364 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4365 * Sets up the filesystem columns, note: filesystem always has an icon/filename field.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4366 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4367 * handle: Handle to the container to be configured.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4368 * flags: An array of unsigned longs with column flags.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4369 * titles: An array of strings with column text titles.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4370 * count: The number of columns (this should match the arrays).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4371 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4372 int dw_filesystem_setup(HWND handle, unsigned long *flags, char **titles, int count)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4373 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4374 char **newtitles = malloc(sizeof(char *) * (count + 1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4375 unsigned long *newflags = malloc(sizeof(unsigned long) * (count + 1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4376 char *coltitle = (char *)g_object_get_data(G_OBJECT(handle), "_dw_coltitle");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4377
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4378 newtitles[0] = coltitle ? coltitle : "Filename";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4379 newflags[0] = DW_CFA_STRINGANDICON | DW_CFA_LEFT | DW_CFA_HORZSEPARATOR;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4380
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4381 memcpy(&newtitles[1], titles, sizeof(char *) * count);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4382 memcpy(&newflags[1], flags, sizeof(unsigned long) * count);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4383
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4384 _dw_container_setup(handle, newflags, newtitles, count + 1, 1, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4385
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4386 if(coltitle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4387 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4388 g_object_set_data(G_OBJECT(handle), "_dw_coltitle", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4389 free(coltitle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4390 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4391 if ( newtitles) free(newtitles);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4392 if ( newflags ) free(newflags);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4393 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4394 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4395
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4396 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4397 * Obtains an icon from a module (or header in GTK).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4398 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4399 * module: Handle to module (DLL) in OS/2 and Windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4400 * id: A unsigned long id int the resources on OS/2 and
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4401 * Windows, on GTK this is converted to a pointer
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4402 * to an embedded XPM.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4403 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4404 HICN dw_icon_load(unsigned long module, unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4405 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4406 return (HICN)id;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4407 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4408
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4409 /* Internal function to keep HICNs from getting too big */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4410 GdkPixbuf *_icon_resize(GdkPixbuf *ret)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4411 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4412 if(ret)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4413 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4414 int pwidth = gdk_pixbuf_get_width(ret);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4415 int pheight = gdk_pixbuf_get_height(ret);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4416
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4417 if(pwidth > 24 || pheight > 24)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4418 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4419 GdkPixbuf *orig = ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4420 ret = gdk_pixbuf_scale_simple(ret, pwidth > 24 ? 24 : pwidth, pheight > 24 ? 24 : pheight, GDK_INTERP_BILINEAR);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4421 g_object_unref(G_OBJECT(orig));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4422 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4423 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4424 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4425 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4426
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4427 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4428 * Obtains an icon from a file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4429 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4430 * filename: Name of the file, omit extention to have
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4431 * DW pick the appropriate file extension.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4432 * (ICO on OS/2 or Windows, XPM on Unix)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4433 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4434 HICN API dw_icon_load_from_file(const char *filename)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4435 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4436 char *file = alloca(strlen(filename) + 6);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4437 int i, found_ext = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4438
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4439 if (!file)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4440 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4441
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4442 strcpy(file, filename);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4443
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4444 /* check if we can read from this file (it exists and read permission) */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4445 if (access(file, 04) != 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4446 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4447 /* Try with various extentions */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4448 for ( i = 0; i < NUM_EXTS; i++ )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4449 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4450 strcpy( file, filename );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4451 strcat( file, image_exts[i] );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4452 if ( access( file, 04 ) == 0 )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4453 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4454 found_ext = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4455 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4456 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4457 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4458 if ( found_ext == 0 )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4459 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4460 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4461 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4462 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4463
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4464 return _icon_resize(gdk_pixbuf_new_from_file(file, NULL));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4465 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4466
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4467 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4468 * Obtains an icon from data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4469 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4470 * data: Source of data for image.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4471 * len: length of data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4472 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4473 HICN API dw_icon_load_from_data(const char *data, int len)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4474 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4475 int fd, written = -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4476 char template[] = "/tmp/dwiconXXXXXX";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4477 HICN ret = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4478
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4479 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4480 * A real hack; create a temporary file and write the contents
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4481 * of the data to the file
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4482 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4483 if((fd = mkstemp(template)) != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4484 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4485 written = write(fd, data, len);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4486 close(fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4487 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4488 /* Bail if we couldn't write full file */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4489 if(fd == -1 || written != len)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4490 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4491 ret = _icon_resize(gdk_pixbuf_new_from_file(template, NULL));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4492 unlink(template);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4493 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4494 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4495
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4496 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4497 * Frees a loaded resource in OS/2 and Windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4498 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4499 * handle: Handle to icon returned by dw_icon_load().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4500 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4501 void dw_icon_free(HICN handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4502 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4503 int iicon = GPOINTER_TO_INT(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4504
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4505 if(iicon > 65535)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4506 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4507 g_object_unref(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4508 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4509 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4510
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4511 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4512 * Allocates memory used to populate a container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4513 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4514 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4515 * rowcount: The number of items to be populated.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4516 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4517 void *dw_container_alloc(HWND handle, int rowcount)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4518 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4519 int z, prevrowcount = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4520 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4521 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4522
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4523 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4524
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4525 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4526 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4527 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4528
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4529 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4530 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4531 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4532
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4533 prevrowcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4534
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4535 for(z=0;z<rowcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4536 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4537 gtk_list_store_append(store, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4538 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4539 g_object_set_data(G_OBJECT(cont), "_dw_insertpos", GINT_TO_POINTER(prevrowcount));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4540 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(rowcount + prevrowcount));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4541 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4542 return (void *)cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4543 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4544
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4545 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4546 * Internal representation of dw_container_set_item() extracted so we can pass
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4547 * two data pointers; icon and text for dw_filesystem_set_item().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4548 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4549 void _dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4550 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4551 char numbuf[25] = {0}, textbuffer[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4552 int flag = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4553 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4554 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4555
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4556 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4557
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4558 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4559 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4560 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4561
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4562 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4563 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4564 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4565
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4566 snprintf(numbuf, 24, "_dw_cont_col%d", column);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4567 flag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), numbuf));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4568 if(pointer)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4569 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4570 row += GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_insertpos"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4571 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4572
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4573 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, row))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4574 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4575 if(flag & DW_CFA_STRINGANDICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4576 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4577 void **thisdata = (void **)data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4578 HICN hicon = data ? *((HICN *)thisdata[0]) : 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4579 char *tmp = data ? (char *)thisdata[1] : NULL;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
4580 GdkPixbuf *pixbuf = hicon ? _dw_find_pixbuf(hicon, NULL, NULL) : NULL;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4581
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4582 gtk_list_store_set(store, &iter, _DW_CONTAINER_STORE_EXTRA, pixbuf, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4583 gtk_list_store_set(store, &iter, _DW_CONTAINER_STORE_EXTRA + 1, tmp, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4584 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4585 else if(flag & DW_CFA_BITMAPORICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4586 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4587 HICN hicon = data ? *((HICN *)data) : 0;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
4588 GdkPixbuf *pixbuf = hicon ? _dw_find_pixbuf(hicon, NULL, NULL) : NULL;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4589
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4590 gtk_list_store_set(store, &iter, column + _DW_CONTAINER_STORE_EXTRA + 1, pixbuf, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4591 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4592 else if(flag & DW_CFA_STRING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4593 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4594 char *tmp = data ? *((char **)data) : NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4595 gtk_list_store_set(store, &iter, column + _DW_CONTAINER_STORE_EXTRA + 1, tmp, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4596 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4597 else if(flag & DW_CFA_ULONG)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4598 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4599 ULONG tmp = data ? *((ULONG *)data): 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4600
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4601 gtk_list_store_set(store, &iter, column + _DW_CONTAINER_STORE_EXTRA + 1, tmp, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4602 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4603 else if(flag & DW_CFA_DATE)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4604 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4605 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4606 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4607 struct tm curtm;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4608 CDATE cdate = *((CDATE *)data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4609
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4610 memset( &curtm, 0, sizeof(curtm) );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4611 curtm.tm_mday = cdate.day;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4612 curtm.tm_mon = cdate.month - 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4613 curtm.tm_year = cdate.year - 1900;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4614
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4615 strftime(textbuffer, 100, "%x", &curtm);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4616 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4617 gtk_list_store_set(store, &iter, column + _DW_CONTAINER_STORE_EXTRA + 1, textbuffer, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4618 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4619 else if(flag & DW_CFA_TIME)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4620 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4621 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4622 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4623 struct tm curtm;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4624 CTIME ctime = *((CTIME *)data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4625
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4626 memset( &curtm, 0, sizeof(curtm) );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4627 curtm.tm_hour = ctime.hours;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4628 curtm.tm_min = ctime.minutes;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4629 curtm.tm_sec = ctime.seconds;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4630
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4631 strftime(textbuffer, 100, "%X", &curtm);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4632 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4633 gtk_list_store_set(store, &iter, column + _DW_CONTAINER_STORE_EXTRA + 1, textbuffer, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4634 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4635 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4636 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4637 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4638
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4639 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4640 * Sets an item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4641 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4642 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4643 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4644 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4645 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4646 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4647 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4648 void dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4649 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4650 _dw_container_set_item(handle, pointer, column, row, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4651 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4652
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4653 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4654 * Changes an existing item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4655 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4656 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4657 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4658 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4659 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4660 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4661 void dw_container_change_item(HWND handle, int column, int row, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4662 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4663 _dw_container_set_item(handle, NULL, column, row, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4664 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4665
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4666 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4667 * Changes an existing item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4668 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4669 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4670 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4671 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4672 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4673 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4674 void API dw_filesystem_change_item(HWND handle, int column, int row, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4675 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4676 dw_filesystem_set_item(handle, NULL, column, row, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4677 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4678
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4679 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4680 * Changes an item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4681 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4682 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4683 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4684 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4685 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4686 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4687 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4688 void API dw_filesystem_change_file(HWND handle, int row, const char *filename, HICN icon)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4689 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4690 dw_filesystem_set_file(handle, NULL, row, filename, icon);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4691 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4692
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4693 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4694 * Sets an item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4695 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4696 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4697 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4698 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4699 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4700 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4701 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4702 void dw_filesystem_set_file(HWND handle, void *pointer, int row, const char *filename, HICN icon)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4703 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4704 void *data[2] = { (void *)&icon, (void *)filename };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4705
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4706 _dw_container_set_item(handle, pointer, 0, row, (void *)data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4707 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4708
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4709 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4710 * Sets an item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4711 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4712 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4713 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4714 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4715 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4716 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4717 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4718 void dw_filesystem_set_item(HWND handle, void *pointer, int column, int row, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4719 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4720 _dw_container_set_item(handle, pointer, column + 1, row, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4721 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4722
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4723 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4724 * Gets column type for a container column
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4725 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4726 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4727 * column: Zero based column.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4728 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4729 int dw_container_get_column_type(HWND handle, int column)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4730 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4731 char numbuf[25] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4732 int flag, rc = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4733 GtkWidget *cont = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4734
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4735 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4736 if(!cont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4737 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4738
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4739 snprintf(numbuf, 24, "_dw_cont_col%d", column);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4740 flag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), numbuf));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4741
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4742 if(flag & DW_CFA_BITMAPORICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4743 rc = DW_CFA_BITMAPORICON;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4744 else if(flag & DW_CFA_STRING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4745 rc = DW_CFA_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4746 else if(flag & DW_CFA_ULONG)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4747 rc = DW_CFA_ULONG;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4748 else if(flag & DW_CFA_DATE)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4749 rc = DW_CFA_DATE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4750 else if(flag & DW_CFA_TIME)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4751 rc = DW_CFA_TIME;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4752 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4753 rc = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4754 return rc;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4755 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4756
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4757 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4758 * Gets column type for a filesystem container column
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4759 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4760 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4761 * column: Zero based column.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4762 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4763 int API dw_filesystem_get_column_type(HWND handle, int column)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4764 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4765 return dw_container_get_column_type( handle, column + 1 );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4766 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4767
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4768 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4769 * Sets the alternating row colors for container window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4770 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4771 * handle: The window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4772 * oddcolor: Odd row background color in DW_RGB format or a default color index.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4773 * evencolor: Even row background color in DW_RGB format or a default color index.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4774 * DW_RGB_TRANSPARENT will disable coloring rows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4775 * DW_CLR_DEFAULT will use the system default alternating row colors.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4776 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4777 void API dw_container_set_stripe(HWND handle, unsigned long oddcolor, unsigned long evencolor)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4778 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4779 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4780
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4781 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4782 * Sets the width of a column in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4783 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4784 * handle: Handle to window (widget) of container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4785 * column: Zero based column of width being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4786 * width: Width of column in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4787 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4788 void dw_container_set_column_width(HWND handle, int column, int width)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4789 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4790 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4791
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4792 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4793
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4794 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4795 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4796 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4797 GtkTreeViewColumn *col = gtk_tree_view_get_column(GTK_TREE_VIEW(cont), column);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4798
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4799 if(col && GTK_IS_TREE_VIEW_COLUMN(col))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4800 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4801 gtk_tree_view_column_set_fixed_width(GTK_TREE_VIEW_COLUMN(col), width);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4802 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4803 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4804 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4805
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4806 /* Internal version for both */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4807 void _dw_container_set_row_data(HWND handle, void *pointer, int row, int type, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4808 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4809 GtkWidget *cont = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4810 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4811
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4812 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4813 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4814 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4815
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4816 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4817 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4818 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4819
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4820 if(pointer)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4821 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4822 row += GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_insertpos"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4823 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4824
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4825 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, row))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4826 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4827 gtk_list_store_set(store, &iter, type, (gpointer)data, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4828 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4829 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4830 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4831
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4832 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4833 * Sets the title of a row in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4834 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4835 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4836 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4837 * title: String title of the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4838 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4839 void dw_container_set_row_title(void *pointer, int row, const char *title)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4840 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4841 _dw_container_set_row_data(pointer, pointer, row, _DW_DATA_TYPE_STRING, (void *)title);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4842 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4843
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4844 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4845 * Changes the title of a row already inserted in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4846 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4847 * handle: Handle to window (widget) of container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4848 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4849 * title: String title of the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4850 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4851 void dw_container_change_row_title(HWND handle, int row, const char *title)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4852 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4853 _dw_container_set_row_data(handle, NULL, row, _DW_DATA_TYPE_STRING, (void *)title);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4854 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4855
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4856 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4857 * Sets the data of a row in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4858 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4859 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4860 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4861 * data: Data pointer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4862 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4863 void dw_container_set_row_data(void *pointer, int row, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4864 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4865 _dw_container_set_row_data(pointer, pointer, row, _DW_DATA_TYPE_POINTER, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4866 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4867
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4868 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4869 * Changes the data of a row already inserted in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4870 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4871 * handle: Handle to window (widget) of container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4872 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4873 * data: Data pointer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4874 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4875 void dw_container_change_row_data(HWND handle, int row, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4876 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4877 _dw_container_set_row_data(handle, NULL, row, _DW_DATA_TYPE_POINTER, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4878 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4879
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4880 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4881 * Sets the title of a row in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4882 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4883 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4884 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4885 * rowcount: The number of rows to be inserted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4886 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4887 void dw_container_insert(HWND handle, void *pointer, int rowcount)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4888 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4889 /* Don't need to do anything here */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4890 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4891
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4892 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4893 * Removes the first x rows from a container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4894 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4895 * handle: Handle to the window (widget) to be deleted from.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4896 * rowcount: The number of rows to be deleted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4897 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4898 void dw_container_delete(HWND handle, int rowcount)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4899 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4900 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4901 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4902
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4903 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4904
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4905 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4906 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4907 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4908
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4909 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4910 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4911 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4912 int rows, z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4913
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4914 rows = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4915
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4916 for(z=0;z<rowcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4917 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4918 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, 0))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4919 gtk_list_store_remove(store, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4920 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4921
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4922 if(rows - rowcount < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4923 rows = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4924 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4925 rows -= rowcount;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4926
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4927 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(rows));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4928 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4929 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4930
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4931 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4932 * Removes all rows from a container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4933 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4934 * handle: Handle to the window (widget) to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4935 * redraw: TRUE to cause the container to redraw immediately.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4936 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4937 void dw_container_clear(HWND handle, int redraw)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4938 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4939 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4940 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4941
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4942 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4943
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4944 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4945 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4946 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4947
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4948 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4949 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4950 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(0));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4951 g_object_set_data(G_OBJECT(cont), "_dw_insertpos", GINT_TO_POINTER(0));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4952
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4953 gtk_list_store_clear(store);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4954 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4955 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4956
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4957 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4958 * Scrolls container up or down.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4959 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4960 * handle: Handle to the window (widget) to be scrolled.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4961 * direction: DW_SCROLL_UP, DW_SCROLL_DOWN, DW_SCROLL_TOP or
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4962 * DW_SCROLL_BOTTOM. (rows is ignored for last two)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4963 * rows: The number of rows to be scrolled.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4964 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4965 void dw_container_scroll(HWND handle, int direction, long rows)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4966 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4967 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4968
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4969 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4970
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4971 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4972 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4973 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4974 GtkAdjustment *adjust = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4975
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4976 if(adjust)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4977 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4978 gint rowcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4979 gdouble currpos = gtk_adjustment_get_value(adjust);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4980 gdouble upper = gtk_adjustment_get_upper(adjust);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4981 gdouble lower = gtk_adjustment_get_lower(adjust);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4982 gdouble change;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4983
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4984 /* Safety check */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4985 if(rowcount < 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4986 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4987
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4988 change = ((gdouble)rows/(gdouble)rowcount) * (upper - lower);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4989
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4990 switch(direction)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4991 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4992 case DW_SCROLL_TOP:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4993 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4994 gtk_adjustment_set_value(adjust, lower);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4995 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4996 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4997 case DW_SCROLL_BOTTOM:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4998 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4999 gtk_adjustment_set_value(adjust, upper);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5000 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5001 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5002 case DW_SCROLL_UP:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5003 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5004 gdouble newpos = currpos - change;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5005 if(newpos < lower)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5006 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5007 newpos = lower;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5008 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5009 gtk_adjustment_set_value(adjust, newpos);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5010 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5011 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5012 case DW_SCROLL_DOWN:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5013 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5014 gdouble newpos = currpos + change;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5015 if(newpos > upper)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5016 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5017 newpos = upper;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5018 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5019 gtk_adjustment_set_value(adjust, newpos);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5020 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5021 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5022 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5023 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5024 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5025 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5026
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5027 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5028 * Starts a new query of a container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5029 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5030 * handle: Handle to the window (widget) to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5031 * flags: If this parameter is DW_CRA_SELECTED it will only
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5032 * return items that are currently selected. Otherwise
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5033 * it will return all records in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5034 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5035 char *dw_container_query_start(HWND handle, unsigned long flags)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5036 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5037 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5038 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5039 char *retval = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5040 int type = flags & DW_CR_RETDATA ? _DW_DATA_TYPE_POINTER : _DW_DATA_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5041
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5042 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5043
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5044 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5045 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5046 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5047
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5048 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5049 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5050 /* These should be separate but right now this will work */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5051 if(flags & DW_CRA_SELECTED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5052 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5053 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5054 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5055 if(list)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5056 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5057 GtkTreePath *path = g_list_nth_data(list, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5058
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5059 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5060 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5061 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5062
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5063 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5064 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5065 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5066
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5067 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, indices[0]))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5068 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5069 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, type, &retval, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5070 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5071 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5072 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5073 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5074 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5075 g_list_free(list);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5076 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5077 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5078 else if(flags & DW_CRA_CURSORED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5079 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5080 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5081
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5082 gtk_tree_view_get_cursor(GTK_TREE_VIEW(cont), &path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5083 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5084 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5085 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5086
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5087 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5088 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5089 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, type, &retval, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5090 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5091 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5092 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5093 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5094 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5095 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5096 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5097
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5098 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, 0))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5099 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5100 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, type, &retval, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5101 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5102 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5103 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5104 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5105 /* If there is a title, duplicate it and free the temporary copy */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5106 if(retval && type == _DW_DATA_TYPE_STRING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5107 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5108 char *temp = retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5109 retval = strdup(temp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5110 g_free(temp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5111 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5112 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5113 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5114
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5115 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5116 * Continues an existing query of a container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5117 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5118 * handle: Handle to the window (widget) to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5119 * flags: If this parameter is DW_CRA_SELECTED it will only
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5120 * return items that are currently selected. Otherwise
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5121 * it will return all records in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5122 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5123 char *dw_container_query_next(HWND handle, unsigned long flags)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5124 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5125 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5126 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5127 char *retval = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5128 int type = flags & DW_CR_RETDATA ? _DW_DATA_TYPE_POINTER : _DW_DATA_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5129
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5130 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5131
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5132 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5133 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5134 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5135
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5136 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5137 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5138 int pos = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_querypos"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5139 int count = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5140
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5141 /* These should be separate but right now this will work */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5142 if(flags & DW_CRA_SELECTED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5143 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5144 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5145 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5146
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5147 if(list)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5148 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5149 GtkTreePath *path = g_list_nth_data(list, pos);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5150
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5151 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5152 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5153 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5154
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5155 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5156 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5157 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5158
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5159 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, indices[0]))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5160 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5161 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, type, &retval, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5162 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(pos+1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5163 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5164 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5165 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5166 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5167 g_list_free(list);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5168 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5169 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5170 else if(flags & DW_CRA_CURSORED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5171 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5172 /* There will only be one item cursored,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5173 * retrieve it with dw_container_query_start()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5174 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5175 retval = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5176 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5177 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5178 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5179 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5180
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5181 if(pos < count && gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, pos))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5182 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5183 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, type, &retval, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5184 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(pos+1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5185 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5186 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5187 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5188 /* If there is a title, duplicate it and free the temporary copy */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5189 if(retval && type == _DW_DATA_TYPE_STRING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5190 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5191 char *temp = retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5192 retval = strdup(temp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5193 g_free(temp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5194 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5195 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5196 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5197
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5198 int _find_iter(GtkListStore *store, GtkTreeIter *iter, void *data, int textcomp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5199 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5200 int z, rows = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5201 void *thisdata;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5202 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5203
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5204 for(z=0;z<rows;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5205 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5206 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), iter, NULL, z))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5207 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5208 /* Get either string from position 0 or pointer from position 1 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5209 gtk_tree_model_get(GTK_TREE_MODEL(store), iter, textcomp ? _DW_DATA_TYPE_STRING : _DW_DATA_TYPE_POINTER, &thisdata, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5210 if((textcomp && thisdata && strcmp((char *)thisdata, (char *)data) == 0) || (!textcomp && thisdata == data))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5211 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5212 retval = TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5213 z = rows;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5214 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5215 if(textcomp && thisdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5216 g_free(thisdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5217 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5218 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5219 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5220 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5221
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5222 void _dw_container_cursor(HWND handle, void *data, int textcomp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5223 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5224 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5225 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5226
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5227 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5228
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5229 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5230 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5231 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5232
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5233 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5234 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5235 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5236
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5237 if(_find_iter(store, &iter, data, textcomp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5238 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5239 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5240
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5241 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5242 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5243 gtk_tree_view_row_activated(GTK_TREE_VIEW(cont), path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5244 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5245 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5246 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5247 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5248 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5249
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5250 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5251 * Cursors the item with the text speficied, and scrolls to that item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5252 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5253 * handle: Handle to the window (widget) to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5254 * text: Text usually returned by dw_container_query().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5255 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5256 void dw_container_cursor(HWND handle, const char *text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5257 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5258 _dw_container_cursor(handle, (void *)text, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5259 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5260
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5261 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5262 * Cursors the item with the text speficied, and scrolls to that item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5263 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5264 * handle: Handle to the window (widget) to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5265 * text: Text usually returned by dw_container_query().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5266 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5267 void dw_container_cursor_by_data(HWND handle, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5268 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5269 _dw_container_cursor(handle, data, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5270 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5271
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5272 void _dw_container_delete_row(HWND handle, void *data, int textcomp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5273 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5274 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5275 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5276
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5277 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5278
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5279 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5280 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5281 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5282
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5283 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5284 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5285 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5286 int rows = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5287
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5288 if(_find_iter(store, &iter, data, textcomp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5289 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5290 gtk_list_store_remove(store, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5291 rows--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5292 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5293
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5294 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(rows));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5295 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5296 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5297
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5298 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5299 * Deletes the item with the text speficied.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5300 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5301 * handle: Handle to the window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5302 * text: Text usually returned by dw_container_query().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5303 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5304 void dw_container_delete_row(HWND handle, const char *text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5305 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5306 _dw_container_delete_row(handle, (void *)text, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5307 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5308
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5309 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5310 * Deletes the item with the text speficied.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5311 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5312 * handle: Handle to the window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5313 * text: Text usually returned by dw_container_query().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5314 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5315 void dw_container_delete_row_by_data(HWND handle, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5316 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5317 _dw_container_delete_row(handle, data, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5318 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5319
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5320 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5321 * Optimizes the column widths so that all data is visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5322 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5323 * handle: Handle to the window (widget) to be optimized.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5324 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5325 void dw_container_optimize(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5326 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5327 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5328
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5329 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5330
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5331 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5332 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5333 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5334 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5335
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5336 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5337 * Inserts an icon into the taskbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5338 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5339 * handle: Window handle that will handle taskbar icon messages.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5340 * icon: Icon handle to display in the taskbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5341 * bubbletext: Text to show when the mouse is above the icon.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5342 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5343 void dw_taskbar_insert(HWND handle, HICN icon, const char *bubbletext)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5344 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5345 /* TODO: Removed in GTK4.... no replacement? */
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5346 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5347
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5348 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5349 * Deletes an icon from the taskbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5350 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5351 * handle: Window handle that was used with dw_taskbar_insert().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5352 * icon: Icon handle that was used with dw_taskbar_insert().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5353 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5354 void dw_taskbar_delete(HWND handle, HICN icon)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5355 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5356 /* TODO: Removed in GTK4.... no replacement? */
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5357 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5358
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5359 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5360 * Creates a rendering context widget (window) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5361 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5362 * id: An id to be used with dw_window_from_id.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5363 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5364 * A handle to the widget or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5365 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5366 HWND dw_render_new(unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5367 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5368 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5369
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5370 tmp = gtk_drawing_area_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5371 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5372 gtk_widget_set_can_focus(tmp, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5373 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5374 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5375 dw_window_set_font(tmp, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5376 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5377 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5378
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5379 /* Returns a GdkRGBA from a DW color */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5380 static GdkRGBA _internal_color(unsigned long value)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5381 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5382 if(DW_RGB_COLOR & value)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5383 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5384 GdkRGBA color = { (gfloat)DW_RED_VALUE(value) / 255.0, (gfloat)DW_GREEN_VALUE(value) / 255.0, (gfloat)DW_BLUE_VALUE(value) / 255.0, 1.0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5385 return color;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5386 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5387 if (value < 16)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5388 return _colors[value];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5389 return _colors[0];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5390 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5391
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5392 /* Sets the current foreground drawing color.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5393 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5394 * red: red value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5395 * green: green value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5396 * blue: blue value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5397 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5398 void dw_color_foreground_set(unsigned long value)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5399 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5400 GdkRGBA color = _internal_color(value);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5401 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5402
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5403 *foreground = color;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5404 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5405
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5406 /* Sets the current background drawing color.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5407 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5408 * red: red value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5409 * green: green value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5410 * blue: blue value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5411 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5412 void dw_color_background_set(unsigned long value)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5413 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5414 GdkRGBA *background = pthread_getspecific(_dw_bg_color_key);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5415
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5416 if(value == DW_CLR_DEFAULT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5417 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5418 if(background)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5419 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5420 pthread_setspecific(_dw_bg_color_key, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5421 free(background);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5422 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5423 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5424 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5425 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5426 GdkRGBA color = _internal_color(value);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5427
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5428 if(!background)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5429 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5430 background = malloc(sizeof(GdkRGBA));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5431 pthread_setspecific(_dw_bg_color_key, background);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5432 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5433 *background = color;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5434 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5435 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5436
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5437 /* Allows the user to choose a color using the system's color chooser dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5438 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5439 * value: current color
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5440 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5441 * The selected color or the current color if cancelled.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5442 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5443 unsigned long API dw_color_choose(unsigned long value)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5444 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5445 GtkColorChooser *cd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5446 GdkRGBA color = _internal_color(value);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5447 unsigned long retcolor = value;
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5448 DWDialog *tmp = dw_dialog_new(NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5449
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5450 cd = (GtkColorChooser *)gtk_color_chooser_dialog_new("Choose color", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5451 gtk_color_chooser_set_use_alpha(cd, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5452 gtk_color_chooser_set_rgba(cd, &color);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5453
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5454 gtk_widget_show(GTK_WIDGET(cd));
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
5455 g_signal_connect(G_OBJECT(cd), "response", G_CALLBACK(_dw_dialog_response), (gpointer)tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5456
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5457 if(DW_POINTER_TO_INT(dw_dialog_wait(tmp)) == GTK_RESPONSE_OK)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5458 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5459 gtk_color_chooser_get_rgba(cd, &color);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5460 retcolor = DW_RGB((int)(color.red * 255), (int)(color.green * 255), (int)(color.blue * 255));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5461 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5462 if(GTK_IS_WINDOW(cd))
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5463 gtk_window_destroy(GTK_WINDOW(cd));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5464 return retcolor;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5465 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5466
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5467 /* Draw a point on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5468 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5469 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5470 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5471 * x: X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5472 * y: Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5473 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5474 void dw_draw_point(HWND handle, HPIXMAP pixmap, int x, int y)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5475 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5476 cairo_t *cr = NULL;
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5477 GdkDrawContext *dc = NULL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5478 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5479
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5480 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5481 {
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5482 if((cr = g_object_get_data(G_OBJECT(handle), "_dw_cr")))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5483 cached = TRUE;
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5484 else
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5485 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5486 GtkNative *native = gtk_widget_get_native(handle);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5487 GdkSurface *surface = gtk_native_get_surface(native);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5488
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5489 if((dc = GDK_DRAW_CONTEXT(gdk_surface_create_cairo_context(surface))))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5490 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5491 cairo_region_t *region = cairo_region_create();
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5492 gdk_draw_context_begin_frame(dc, region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5493 cr = gdk_cairo_context_cairo_create(GDK_CAIRO_CONTEXT(dc));
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5494 cairo_region_destroy(region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5495 }
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5496 else
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5497 return;
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5498 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5499 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5500 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5501 cr = cairo_create(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5502 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5503 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5504 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5505
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5506 gdk_cairo_set_source_rgba(cr, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5507 cairo_set_line_width(cr, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5508 cairo_move_to(cr, x, y);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5509 cairo_stroke(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5510 /* If we are using a drawing context...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5511 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5512 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5513 if(dc)
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5514 gdk_draw_context_end_frame(dc);
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5515 else if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5516 cairo_destroy(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5517 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5518 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5519
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5520 /* Draw a line on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5521 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5522 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5523 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5524 * x1: First X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5525 * y1: First Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5526 * x2: Second X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5527 * y2: Second Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5528 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5529 void dw_draw_line(HWND handle, HPIXMAP pixmap, int x1, int y1, int x2, int y2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5530 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5531 cairo_t *cr = NULL;
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5532 GdkDrawContext *dc = NULL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5533 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5534
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5535 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5536 {
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5537 if((cr = g_object_get_data(G_OBJECT(handle), "_dw_cr")))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5538 cached = TRUE;
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5539 else
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5540 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5541 GtkNative *native = gtk_widget_get_native(handle);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5542 GdkSurface *surface = gtk_native_get_surface(native);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5543
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5544 if((dc = GDK_DRAW_CONTEXT(gdk_surface_create_cairo_context(surface))))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5545 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5546 cairo_region_t *region = cairo_region_create();
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5547 gdk_draw_context_begin_frame(dc, region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5548 cr = gdk_cairo_context_cairo_create(GDK_CAIRO_CONTEXT(dc));
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5549 cairo_region_destroy(region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5550 }
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5551 else
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5552 return;
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5553 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5554 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5555 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5556 cr = cairo_create(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5557 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5558 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5559 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5560
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5561 gdk_cairo_set_source_rgba(cr, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5562 cairo_set_line_width(cr, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5563 cairo_move_to(cr, x1, y1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5564 cairo_line_to(cr, x2, y2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5565 cairo_stroke(cr);
2280
7902be60c542 GTK4: More work on the draw and bitblt functions... still doesn't work
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2279
diff changeset
5566 /* If we are using a drawing context...
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5567 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5568 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5569 if(dc)
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5570 gdk_draw_context_end_frame(dc);
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5571 else if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5572 cairo_destroy(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5573 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5574 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5575
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5576 /* Draw a closed polygon on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5577 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5578 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5579 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5580 * flags: DW_DRAW_FILL (1) to fill the polygon or DW_DRAW_DEFAULT (0).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5581 * number of points
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5582 * x[]: X coordinates.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5583 * y[]: Y coordinates.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5584 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5585 void dw_draw_polygon(HWND handle, HPIXMAP pixmap, int flags, int npoints, int *x, int *y)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5586 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5587 cairo_t *cr = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5588 int z;
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5589 GdkDrawContext *dc = NULL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5590 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5591
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5592 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5593 {
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5594 if((cr = g_object_get_data(G_OBJECT(handle), "_dw_cr")))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5595 cached = TRUE;
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5596 else
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5597 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5598 GtkNative *native = gtk_widget_get_native(handle);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5599 GdkSurface *surface = gtk_native_get_surface(native);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5600
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5601 if((dc = GDK_DRAW_CONTEXT(gdk_surface_create_cairo_context(surface))))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5602 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5603 cairo_region_t *region = cairo_region_create();
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5604 gdk_draw_context_begin_frame(dc, region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5605 cr = gdk_cairo_context_cairo_create(GDK_CAIRO_CONTEXT(dc));
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5606 cairo_region_destroy(region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5607 }
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5608 else
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5609 return;
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5610 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5611 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5612 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5613 cr = cairo_create(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5614 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5615 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5616 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5617
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5618 if(flags & DW_DRAW_NOAA)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5619 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5620
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5621 gdk_cairo_set_source_rgba(cr, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5622 cairo_set_line_width(cr, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5623 cairo_move_to(cr, x[0], y[0]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5624 for(z=1;z<npoints;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5625 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5626 cairo_line_to(cr, x[z], y[z]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5627 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5628 if(flags & DW_DRAW_FILL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5629 cairo_fill(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5630 cairo_stroke(cr);
2280
7902be60c542 GTK4: More work on the draw and bitblt functions... still doesn't work
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2279
diff changeset
5631 /* If we are using a drawing context...
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5632 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5633 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5634 if(dc)
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5635 gdk_draw_context_end_frame(dc);
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5636 else if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5637 cairo_destroy(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5638 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5639 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5640
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5641 /* Draw a rectangle on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5642 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5643 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5644 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5645 * flags: DW_DRAW_FILL (1) to fill the box or DW_DRAW_DEFAULT (0).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5646 * x: X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5647 * y: Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5648 * width: Width of rectangle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5649 * height: Height of rectangle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5650 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5651 void dw_draw_rect(HWND handle, HPIXMAP pixmap, int flags, int x, int y, int width, int height)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5652 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5653 cairo_t *cr = NULL;
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5654 GdkDrawContext *dc = NULL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5655 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5656
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5657 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5658 {
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5659 if((cr = g_object_get_data(G_OBJECT(handle), "_dw_cr")))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5660 cached = TRUE;
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5661 else
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5662 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5663 GtkNative *native = gtk_widget_get_native(handle);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5664 GdkSurface *surface = gtk_native_get_surface(native);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5665
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5666 if((dc = GDK_DRAW_CONTEXT(gdk_surface_create_cairo_context(surface))))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5667 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5668 cairo_region_t *region = cairo_region_create();
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5669 gdk_draw_context_begin_frame(dc, region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5670 cr = gdk_cairo_context_cairo_create(GDK_CAIRO_CONTEXT(dc));
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5671 cairo_region_destroy(region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5672 }
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5673 else
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5674 return;
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5675 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5676 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5677 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5678 cr = cairo_create(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5679 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5680 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5681 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5682
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5683 if(flags & DW_DRAW_NOAA)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5684 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5685
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5686 gdk_cairo_set_source_rgba(cr, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5687 cairo_set_line_width(cr, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5688 cairo_move_to(cr, x, y);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5689 cairo_line_to(cr, x, y + height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5690 cairo_line_to(cr, x + width, y + height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5691 cairo_line_to(cr, x + width, y);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5692 if(flags & DW_DRAW_FILL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5693 cairo_fill(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5694 cairo_stroke(cr);
2280
7902be60c542 GTK4: More work on the draw and bitblt functions... still doesn't work
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2279
diff changeset
5695 /* If we are using a drawing context...
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5696 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5697 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5698 if(dc)
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5699 gdk_draw_context_end_frame(dc);
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5700 else if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5701 cairo_destroy(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5702 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5703 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5704
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5705 /* Draw an arc on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5706 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5707 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5708 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5709 * flags: DW_DRAW_FILL (1) to fill the arc or DW_DRAW_DEFAULT (0).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5710 * DW_DRAW_FULL will draw a complete circle/elipse.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5711 * xorigin: X coordinate of center of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5712 * yorigin: Y coordinate of center of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5713 * x1: X coordinate of first segment of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5714 * y1: Y coordinate of first segment of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5715 * x2: X coordinate of second segment of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5716 * y2: Y coordinate of second segment of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5717 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5718 void API dw_draw_arc(HWND handle, HPIXMAP pixmap, int flags, int xorigin, int yorigin, int x1, int y1, int x2, int y2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5719 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5720 cairo_t *cr = NULL;
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5721 GdkDrawContext *dc = NULL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5722 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5723
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5724 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5725 {
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5726 if((cr = g_object_get_data(G_OBJECT(handle), "_dw_cr")))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5727 cached = TRUE;
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5728 else
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5729 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5730 GtkNative *native = gtk_widget_get_native(handle);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5731 GdkSurface *surface = gtk_native_get_surface(native);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5732
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5733 if((dc = GDK_DRAW_CONTEXT(gdk_surface_create_cairo_context(surface))))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5734 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5735 cairo_region_t *region = cairo_region_create();
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5736 gdk_draw_context_begin_frame(dc, region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5737 cr = gdk_cairo_context_cairo_create(GDK_CAIRO_CONTEXT(dc));
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5738 cairo_region_destroy(region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5739 }
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5740 else
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5741 return;
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5742 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5743 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5744 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5745 cr = cairo_create(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5746 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5747 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5748 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5749 int width = abs(x2-x1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5750 float scale = fabs((float)(y2-y1))/(float)width;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5751
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5752 if(flags & DW_DRAW_NOAA)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5753 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5754
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5755 gdk_cairo_set_source_rgba(cr, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5756 cairo_set_line_width(cr, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5757 if(scale != 1.0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5758 cairo_scale(cr, 1.0, scale);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5759 if(flags & DW_DRAW_FULL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5760 cairo_arc(cr, xorigin, yorigin / scale, width/2, 0, M_PI*2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5761 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5762 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5763 double dx = xorigin - x1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5764 double dy = yorigin - y1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5765 double r = sqrt(dx*dx + dy*dy);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5766 double a1 = atan2((y1-yorigin), (x1-xorigin));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5767 double a2 = atan2((y2-yorigin), (x2-xorigin));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5768
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5769 cairo_arc(cr, xorigin, yorigin, r, a1, a2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5770 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5771 if(flags & DW_DRAW_FILL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5772 cairo_fill(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5773 cairo_stroke(cr);
2280
7902be60c542 GTK4: More work on the draw and bitblt functions... still doesn't work
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2279
diff changeset
5774 /* If we are using a drawing context...
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5775 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5776 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5777 if(dc)
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5778 gdk_draw_context_end_frame(dc);
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5779 else if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5780 cairo_destroy(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5781 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5782 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5783
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5784 /* Draw text on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5785 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5786 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5787 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5788 * x: X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5789 * y: Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5790 * text: Text to be displayed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5791 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5792 void dw_draw_text(HWND handle, HPIXMAP pixmap, int x, int y, const char *text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5793 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5794 cairo_t *cr = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5795 PangoFontDescription *font;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5796 char *tmpname, *fontname = "monospace 10";
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5797 GdkDrawContext *dc = NULL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5798 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5799
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5800 if(!text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5801 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5802
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5803 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5804 {
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5805 if((cr = g_object_get_data(G_OBJECT(handle), "_dw_cr")))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5806 cached = TRUE;
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5807 else
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5808 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5809 GtkNative *native = gtk_widget_get_native(handle);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5810 GdkSurface *surface = gtk_native_get_surface(native);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5811
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5812 if((dc = GDK_DRAW_CONTEXT(gdk_surface_create_cairo_context(surface))))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5813 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5814 cairo_region_t *region = cairo_region_create();
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5815 gdk_draw_context_begin_frame(dc, region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5816 cr = gdk_cairo_context_cairo_create(GDK_CAIRO_CONTEXT(dc));
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5817 cairo_region_destroy(region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5818 }
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5819 else
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5820 return;
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5821 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5822 if((tmpname = (char *)g_object_get_data(G_OBJECT(handle), "_dw_fontname")))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5823 fontname = tmpname;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5824 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5825 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5826 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5827 if(pixmap->font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5828 fontname = pixmap->font;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5829 else if(pixmap->handle && (tmpname = (char *)g_object_get_data(G_OBJECT(pixmap->handle), "_dw_fontname")))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5830 fontname = tmpname;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5831 cr = cairo_create(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5832 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5833 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5834 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5835 font = pango_font_description_from_string(fontname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5836 if(font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5837 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5838 PangoContext *context = pango_cairo_create_context(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5839
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5840 if(context)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5841 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5842 PangoLayout *layout = pango_layout_new(context);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5843
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5844 if(layout)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5845 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5846 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5847 GdkRGBA *background = pthread_getspecific(_dw_bg_color_key);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5848
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5849 pango_layout_set_font_description(layout, font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5850 pango_layout_set_text(layout, text, strlen(text));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5851
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5852 gdk_cairo_set_source_rgba(cr, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5853 /* Create a background color attribute if required */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5854 if(background)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5855 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5856 PangoAttrList *list = pango_layout_get_attributes(layout);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5857 PangoAttribute *attr = pango_attr_background_new((guint16)(background->red * 65535),
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5858 (guint16)(background->green * 65535),
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5859 (guint16)(background->blue* 65535));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5860 if(!list)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5861 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5862 list = pango_attr_list_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5863 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5864 pango_attr_list_change(list, attr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5865 pango_layout_set_attributes(layout, list);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5866 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5867 /* Do the drawing */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5868 cairo_move_to(cr, x, y);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5869 pango_cairo_show_layout (cr, layout);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5870
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5871 g_object_unref(layout);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5872 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5873 g_object_unref(context);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5874 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5875 pango_font_description_free(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5876 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5877 /* If we are using a drawing context...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5878 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5879 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5880 if(dc)
2279
70d666a0636f GTK4: Update dw_draw_*() to use the new APIs to draw onto widgets...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2278
diff changeset
5881 gdk_draw_context_end_frame(dc);
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
5882 else if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5883 cairo_destroy(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5884 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5885 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5886
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5887 /* Query the width and height of a text string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5888 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5889 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5890 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5891 * text: Text to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5892 * width: Pointer to a variable to be filled in with the width.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5893 * height Pointer to a variable to be filled in with the height.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5894 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5895 void dw_font_text_extents_get(HWND handle, HPIXMAP pixmap, const char *text, int *width, int *height)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5896 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5897 PangoFontDescription *font;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5898 char *fontname = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5899 int free_fontname = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5900
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5901 if(!text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5902 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5903
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5904 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5905 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5906 fontname = (char *)g_object_get_data(G_OBJECT(handle), "_dw_fontname");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5907 if ( fontname == NULL )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5908 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5909 fontname = dw_window_get_font(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5910 free_fontname = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5911 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5912 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5913 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5914 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5915 if(pixmap->font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5916 fontname = pixmap->font;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5917 else if(pixmap->handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5918 fontname = (char *)g_object_get_data(G_OBJECT(pixmap->handle), "_dw_fontname");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5919 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5920
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5921 font = pango_font_description_from_string(fontname ? fontname : "monospace 10");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5922 if(font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5923 {
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
5924 PangoContext *context = gtk_widget_get_pango_context(pixmap ? pixmap->handle : handle);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5925
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5926 if(context)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5927 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5928 PangoLayout *layout = pango_layout_new(context);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5929
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5930 if(layout)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5931 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5932 PangoRectangle rect;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5933
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5934 pango_layout_set_font_description(layout, font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5935 pango_layout_set_text(layout, text, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5936 pango_layout_get_pixel_extents(layout, NULL, &rect);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5937
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5938 if(width)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5939 *width = rect.width;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5940 if(height)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5941 *height = rect.height;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5942
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5943 g_object_unref(layout);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5944 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5945 g_object_unref(context);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5946 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5947 pango_font_description_free(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5948 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5949 if(free_fontname)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
5950 free(fontname);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5951 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5952
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5953 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5954 * Creates a pixmap with given parameters.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5955 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5956 * handle: Window handle the pixmap is associated with.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5957 * or zero to enable this pixmap to be written
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5958 * off the screen to reduce flicker
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5959 * width: Width of the pixmap in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5960 * height: Height of the pixmap in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5961 * depth: Color depth of the pixmap.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5962 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5963 * A handle to a pixmap or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5964 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5965 HPIXMAP dw_pixmap_new(HWND handle, unsigned long width, unsigned long height, int depth)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5966 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5967 HPIXMAP pixmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5968
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5969 if (!(pixmap = calloc(1,sizeof(struct _hpixmap))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5970 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5971
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5972 if (!depth)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5973 depth = -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5974
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5975 pixmap->width = width; pixmap->height = height;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5976
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5977
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5978 pixmap->handle = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5979 /* Depth needs to be divided by 3... but for the RGB colorspace...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5980 * only 8 bits per sample is allowed, so to avoid issues just pass 8 for now.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5981 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5982 pixmap->pixbuf = gdk_pixbuf_new( GDK_COLORSPACE_RGB, FALSE, 8, width, height );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5983 pixmap->image = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5984 return pixmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5985 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5986
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5987 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5988 * Creates a pixmap from a file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5989 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5990 * handle: Window handle the pixmap is associated with.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5991 * filename: Name of the file, omit extention to have
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5992 * DW pick the appropriate file extension.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5993 * (BMP on OS/2 or Windows, XPM on Unix)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5994 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5995 * A handle to a pixmap or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5996 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5997 HPIXMAP dw_pixmap_new_from_file(HWND handle, const char *filename)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5998 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5999 HPIXMAP pixmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6000 char *file = alloca(strlen(filename) + 6);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6001 int found_ext = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6002 int i;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6003
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6004 if (!file || !(pixmap = calloc(1,sizeof(struct _hpixmap))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6005 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6006
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6007 strcpy(file, filename);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6008
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6009 /* check if we can read from this file (it exists and read permission) */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6010 if(access(file, 04) != 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6011 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6012 /* Try with various extentions */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6013 for ( i = 0; i < NUM_EXTS; i++ )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6014 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6015 strcpy( file, filename );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6016 strcat( file, image_exts[i] );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6017 if ( access( file, 04 ) == 0 )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6018 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6019 found_ext = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6020 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6021 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6022 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6023 if ( found_ext == 0 )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6024 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6025 free(pixmap);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6026 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6027 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6028 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6029
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6030 pixmap->pixbuf = gdk_pixbuf_new_from_file(file, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6031 pixmap->image = cairo_image_surface_create_from_png(file);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6032 pixmap->width = gdk_pixbuf_get_width(pixmap->pixbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6033 pixmap->height = gdk_pixbuf_get_height(pixmap->pixbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6034 pixmap->handle = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6035 return pixmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6036 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6037
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6038 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6039 * Creates a pixmap from data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6040 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6041 * handle: Window handle the pixmap is associated with.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6042 * data: Source of image data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6043 * DW pick the appropriate file extension.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6044 * (BMP on OS/2 or Windows, XPM on Unix)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6045 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6046 * A handle to a pixmap or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6047 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6048 HPIXMAP dw_pixmap_new_from_data(HWND handle, const char *data, int len)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6049 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6050 int fd, written = -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6051 HPIXMAP pixmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6052 char template[] = "/tmp/dwpixmapXXXXXX";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6053
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6054 if(!data || !(pixmap = calloc(1,sizeof(struct _hpixmap))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6055 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6056
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6057 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6058 * A real hack; create a temporary file and write the contents
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6059 * of the data to the file
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6060 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6061 if((fd = mkstemp(template)) != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6062 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6063 written = write(fd, data, len);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6064 close(fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6065 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6066 /* Bail if we couldn't write full file */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6067 if(fd == -1 || written != len)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6068 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6069 pixmap->pixbuf = gdk_pixbuf_new_from_file(template, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6070 pixmap->image = cairo_image_surface_create_from_png(template);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6071 pixmap->width = gdk_pixbuf_get_width(pixmap->pixbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6072 pixmap->height = gdk_pixbuf_get_height(pixmap->pixbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6073 /* remove our temporary file */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6074 unlink(template);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6075 pixmap->handle = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6076 return pixmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6077 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6078
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6079 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6080 * Sets the transparent color for a pixmap
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6081 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6082 * pixmap: Handle to a pixmap returned by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6083 * dw_pixmap_new..
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6084 * color: transparent color
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6085 * Note: This does nothing on GTK+ as transparency
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6086 * is handled automatically
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6087 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6088 void dw_pixmap_set_transparent_color(HPIXMAP pixmap, unsigned long color)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6089 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6090 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6091
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6092 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6093 * Creates a pixmap from internal resource graphic specified by id.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6094 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6095 * handle: Window handle the pixmap is associated with.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6096 * id: Resource ID associated with requested pixmap.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6097 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6098 * A handle to a pixmap or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6099 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6100 HPIXMAP dw_pixmap_grab(HWND handle, ULONG id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6101 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6102 HPIXMAP pixmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6103
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6104 if (!(pixmap = calloc(1,sizeof(struct _hpixmap))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6105 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6106
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
6107 pixmap->pixbuf = gdk_pixbuf_copy(_dw_find_pixbuf((HICN)id, &pixmap->width, &pixmap->height));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6108 return pixmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6109 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6110
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6111 /* Call this after drawing to the screen to make sure
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6112 * anything you have drawn is visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6113 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6114 void dw_flush(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6115 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6116 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6117
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6118 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6119 * Sets the font used by a specified pixmap.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6120 * Normally the pixmap font is obtained from the associated window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6121 * However this can be used to override that, or for pixmaps with no window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6122 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6123 * pixmap: Handle to a pixmap returned by dw_pixmap_new() or
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6124 * passed to the application via a callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6125 * fontname: Name and size of the font in the form "size.fontname"
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6126 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6127 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6128 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6129 int API dw_pixmap_set_font(HPIXMAP pixmap, const char *fontname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6130 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6131 if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6132 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6133 char *oldfont = pixmap->font;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6134
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6135 pixmap->font = _convert_font(fontname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6136
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6137 if(oldfont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6138 free(oldfont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6139 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6140 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6141 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6142 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6143
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6144 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6145 * Destroys an allocated pixmap.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6146 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6147 * pixmap: Handle to a pixmap returned by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6148 * dw_pixmap_new..
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6149 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6150 void dw_pixmap_destroy(HPIXMAP pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6151 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6152 g_object_unref(G_OBJECT(pixmap->pixbuf));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6153 cairo_surface_destroy(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6154 if(pixmap->font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6155 free(pixmap->font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6156 free(pixmap);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6157 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6158
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6159 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6160 * Copies from one item to another.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6161 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6162 * dest: Destination window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6163 * destp: Destination pixmap. (choose only one).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6164 * xdest: X coordinate of destination.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6165 * ydest: Y coordinate of destination.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6166 * width: Width of area to copy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6167 * height: Height of area to copy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6168 * src: Source window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6169 * srcp: Source pixmap. (choose only one).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6170 * xsrc: X coordinate of source.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6171 * ysrc: Y coordinate of source.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6172 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6173 void API dw_pixmap_bitblt(HWND dest, HPIXMAP destp, int xdest, int ydest, int width, int height, HWND src, HPIXMAP srcp, int xsrc, int ysrc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6174 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6175 dw_pixmap_stretch_bitblt(dest, destp, xdest, ydest, width, height, src, srcp, xsrc, ysrc, -1, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6176 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6177
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6178 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6179 * Copies from one surface to another allowing for stretching.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6180 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6181 * dest: Destination window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6182 * destp: Destination pixmap. (choose only one).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6183 * xdest: X coordinate of destination.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6184 * ydest: Y coordinate of destination.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6185 * width: Width of the target area.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6186 * height: Height of the target area.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6187 * src: Source window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6188 * srcp: Source pixmap. (choose only one).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6189 * xsrc: X coordinate of source.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6190 * ysrc: Y coordinate of source.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6191 * srcwidth: Width of area to copy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6192 * srcheight: Height of area to copy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6193 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6194 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6195 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6196 int API dw_pixmap_stretch_bitblt(HWND dest, HPIXMAP destp, int xdest, int ydest, int width, int height, HWND src, HPIXMAP srcp, int xsrc, int ysrc, int srcwidth, int srcheight)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6197 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6198 cairo_t *cr = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6199 int retval = DW_ERROR_GENERAL;
2280
7902be60c542 GTK4: More work on the draw and bitblt functions... still doesn't work
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2279
diff changeset
6200 GdkDrawContext *dc = NULL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6201 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6202
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6203 if((!dest && (!destp || !destp->image)) || (!src && (!srcp || !srcp->image)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6204 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6205
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6206 if(dest)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6207 {
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6208 if((cr = g_object_get_data(G_OBJECT(dest), "_dw_cr")))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6209 cached = TRUE;
2280
7902be60c542 GTK4: More work on the draw and bitblt functions... still doesn't work
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2279
diff changeset
6210 else
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6211 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6212 GtkNative *native = gtk_widget_get_native(dest);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6213 GdkSurface *surface = gtk_native_get_surface(native);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6214
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6215 if((dc = GDK_DRAW_CONTEXT(gdk_surface_create_cairo_context(surface))))
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6216 {
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6217 cairo_region_t *region = cairo_region_create();
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6218 gdk_draw_context_begin_frame(dc, region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6219 cr = gdk_cairo_context_cairo_create(GDK_CAIRO_CONTEXT(dc));
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6220 cairo_region_destroy(region);
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6221 }
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6222 else
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6223 return retval;
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6224 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6225 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6226 else if(destp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6227 cr = cairo_create(destp->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6228
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6229 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6230 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6231 double xscale = 1, yscale = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6232
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6233 if(srcwidth != -1 && srcheight != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6234 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6235 xscale = (double)width / (double)srcwidth;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6236 yscale = (double)height / (double)srcheight;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6237 cairo_scale(cr, xscale, yscale);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6238 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6239
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6240 if(src)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6241 ;
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6242 #ifdef GTK3
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6243 gdk_cairo_set_source_window (cr, gtk_widget_get_window(src), (xdest + xsrc) / xscale, (ydest + ysrc) / yscale);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6244 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6245 else if(srcp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6246 cairo_set_source_surface (cr, srcp->image, (xdest + xsrc) / xscale, (ydest + ysrc) / yscale);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6247
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6248 cairo_rectangle(cr, xdest / xscale, ydest / yscale, width, height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6249 cairo_fill(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6250 /* If we are using a drawing context...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6251 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6252 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6253 if(dc)
2280
7902be60c542 GTK4: More work on the draw and bitblt functions... still doesn't work
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2279
diff changeset
6254 gdk_draw_context_end_frame(dc);
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6255 else if(!cached)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6256 cairo_destroy(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6257 retval = DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6258 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6259 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6260 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6261
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6262 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6263 * Emits a beep.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6264 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6265 * freq: Frequency.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6266 * dur: Duration.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6267 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6268 void dw_beep(int freq, int dur)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6269 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6270 gdk_display_beep(gdk_display_get_default());
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6271 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6272
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6273 void _my_strlwr(char *buf)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6274 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6275 int z, len = strlen(buf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6276
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6277 for(z=0;z<len;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6278 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6279 if(buf[z] >= 'A' && buf[z] <= 'Z')
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6280 buf[z] -= 'A' - 'a';
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6281 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6282 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6283
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6284 /* Open a shared library and return a handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6285 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6286 * name: Base name of the shared library.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6287 * handle: Pointer to a module handle,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6288 * will be filled in with the handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6289 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6290 int dw_module_load(const char *name, HMOD *handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6291 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6292 int len;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6293 char *newname;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6294 char errorbuf[1025] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6295
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6296
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6297 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6298 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6299
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6300 if((len = strlen(name)) == 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6301 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6302
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6303 /* Lenth + "lib" + ".so" + NULL */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6304 newname = malloc(len + 7);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6305
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6306 if(!newname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6307 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6308
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6309 sprintf(newname, "lib%s.so", name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6310 _my_strlwr(newname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6311
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6312 *handle = dlopen(newname, RTLD_NOW);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6313 if(*handle == NULL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6314 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6315 strncpy(errorbuf, dlerror(), 1024);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6316 printf("%s\n", errorbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6317 sprintf(newname, "lib%s.so", name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6318 *handle = dlopen(newname, RTLD_NOW);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6319 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6320
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6321 free(newname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6322
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6323 return (NULL == *handle) ? -1 : 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6324 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6325
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6326 /* Queries the address of a symbol within open handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6327 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6328 * handle: Module handle returned by dw_module_load()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6329 * name: Name of the symbol you want the address of.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6330 * func: A pointer to a function pointer, to obtain
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6331 * the address.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6332 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6333 int dw_module_symbol(HMOD handle, const char *name, void**func)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6334 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6335 if(!func || !name)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6336 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6337
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6338 if(strlen(name) == 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6339 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6340
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6341 *func = (void*)dlsym(handle, name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6342 return (NULL == *func);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6343 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6344
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6345 /* Frees the shared library previously opened.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6346 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6347 * handle: Module handle returned by dw_module_load()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6348 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6349 int dw_module_close(HMOD handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6350 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6351 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6352 return dlclose(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6353 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6354 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6355
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6356 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6357 * Returns the handle to an unnamed mutex semaphore.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6358 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6359 HMTX dw_mutex_new(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6360 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6361 HMTX mutex = malloc(sizeof(pthread_mutex_t));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6362
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6363 pthread_mutex_init(mutex, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6364 return mutex;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6365 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6366
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6367 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6368 * Closes a semaphore created by dw_mutex_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6369 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6370 * mutex: The handle to the mutex returned by dw_mutex_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6371 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6372 void dw_mutex_close(HMTX mutex)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6373 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6374 if(mutex)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6375 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6376 pthread_mutex_destroy(mutex);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6377 free(mutex);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6378 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6379 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6380
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6381 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6382 * Tries to gain access to the semaphore, if it can't it blocks.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6383 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6384 * mutex: The handle to the mutex returned by dw_mutex_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6385 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6386 void dw_mutex_lock(HMTX mutex)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6387 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6388 pthread_mutex_lock(mutex);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6389 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6390
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6391 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6392 * Tries to gain access to the semaphore.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6393 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6394 * mutex: The handle to the mutex returned by dw_mutex_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6395 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6396 * DW_ERROR_NONE on success, DW_ERROR_TIMEOUT if it is already locked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6397 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6398 int API dw_mutex_trylock(HMTX mutex)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6399 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6400 if(pthread_mutex_trylock(mutex) == 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6401 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6402 return DW_ERROR_TIMEOUT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6403 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6404
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6405 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6406 * Reliquishes the access to the semaphore.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6407 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6408 * mutex: The handle to the mutex returned by dw_mutex_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6409 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6410 void dw_mutex_unlock(HMTX mutex)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6411 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6412 pthread_mutex_unlock(mutex);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6413 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6414
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6415 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6416 * Returns the handle to an unnamed event semaphore.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6417 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6418 HEV dw_event_new(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6419 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6420 HEV eve = (HEV)malloc(sizeof(struct _dw_unix_event));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6421
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6422 if(!eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6423 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6424
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6425 /* We need to be careful here, mutexes on Linux are
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6426 * FAST by default but are error checking on other
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6427 * systems such as FreeBSD and OS/2, perhaps others.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6428 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6429 pthread_mutex_init (&(eve->mutex), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6430 pthread_mutex_lock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6431 pthread_cond_init (&(eve->event), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6432
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6433 pthread_mutex_unlock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6434 eve->alive = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6435 eve->posted = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6436
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6437 return eve;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6438 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6439
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6440 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6441 * Resets a semaphore created by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6442 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6443 * eve: The handle to the event returned by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6444 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6445 int dw_event_reset (HEV eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6446 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6447 if(!eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6448 return DW_ERROR_NON_INIT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6449
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6450 pthread_mutex_lock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6451 pthread_cond_broadcast (&(eve->event));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6452 pthread_cond_init (&(eve->event), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6453 eve->posted = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6454 pthread_mutex_unlock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6455 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6456 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6457
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6458 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6459 * Posts a semaphore created by dw_event_new(). Causing all threads
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6460 * waiting on this event in dw_event_wait to continue.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6461 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6462 * eve: The handle to the event returned by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6463 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6464 int dw_event_post (HEV eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6465 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6466 if(!eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6467 return DW_ERROR_NON_INIT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6468
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6469 pthread_mutex_lock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6470 pthread_cond_broadcast (&(eve->event));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6471 eve->posted = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6472 pthread_mutex_unlock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6473 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6474 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6475
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6476 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6477 * Waits on a semaphore created by dw_event_new(), until the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6478 * event gets posted or until the timeout expires.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6479 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6480 * eve: The handle to the event returned by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6481 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6482 int dw_event_wait(HEV eve, unsigned long timeout)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6483 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6484 int rc;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6485
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6486 if(!eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6487 return DW_ERROR_NON_INIT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6488
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6489 pthread_mutex_lock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6490
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6491 if(eve->posted)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6492 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6493 pthread_mutex_unlock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6494 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6495 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6496
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6497 if(timeout != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6498 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6499 struct timeval now;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6500 struct timespec timeo;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6501
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6502 gettimeofday(&now, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6503 timeo.tv_sec = now.tv_sec + (timeout / 1000);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6504 timeo.tv_nsec = now.tv_usec * 1000;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6505 rc = pthread_cond_timedwait(&(eve->event), &(eve->mutex), &timeo);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6506 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6507 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6508 rc = pthread_cond_wait(&(eve->event), &(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6509
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6510 pthread_mutex_unlock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6511 if(!rc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6512 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6513 if(rc == ETIMEDOUT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6514 return DW_ERROR_TIMEOUT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6515 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6516 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6517
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6518 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6519 * Closes a semaphore created by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6520 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6521 * eve: The handle to the event returned by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6522 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6523 int dw_event_close(HEV *eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6524 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6525 if(!eve || !(*eve))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6526 return DW_ERROR_NON_INIT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6527
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6528 pthread_mutex_lock (&((*eve)->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6529 pthread_cond_destroy (&((*eve)->event));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6530 pthread_mutex_unlock (&((*eve)->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6531 pthread_mutex_destroy (&((*eve)->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6532 free(*eve);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6533 *eve = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6534
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6535 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6536 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6537
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6538 struct _seminfo {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6539 int fd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6540 int waiting;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6541 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6542
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6543 static void _handle_sem(int *tmpsock)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6544 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6545 fd_set rd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6546 struct _seminfo *array = (struct _seminfo *)malloc(sizeof(struct _seminfo));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6547 int listenfd = tmpsock[0];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6548 int bytesread, connectcount = 1, maxfd, z, posted = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6549 char command;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6550 sigset_t mask;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6551
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6552 sigfillset(&mask); /* Mask all allowed signals */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6553 pthread_sigmask(SIG_BLOCK, &mask, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6554
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6555 /* problems */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6556 if(tmpsock[1] == -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6557 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6558 free(array);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6559 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6560 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6561
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6562 array[0].fd = tmpsock[1];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6563 array[0].waiting = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6564
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6565 /* Free the memory allocated in dw_named_event_new. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6566 free(tmpsock);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6567
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6568 while(1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6569 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6570 FD_ZERO(&rd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6571 FD_SET(listenfd, &rd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6572 int DW_UNUSED(result);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6573
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6574 maxfd = listenfd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6575
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6576 /* Added any connections to the named event semaphore */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6577 for(z=0;z<connectcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6578 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6579 if(array[z].fd > maxfd)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6580 maxfd = array[z].fd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6581
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6582 FD_SET(array[z].fd, &rd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6583 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6584
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6585 if(select(maxfd+1, &rd, NULL, NULL, NULL) == -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6586 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6587 free(array);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6588 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6589 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6590
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6591 if(FD_ISSET(listenfd, &rd))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6592 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6593 struct _seminfo *newarray;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6594 int newfd = accept(listenfd, 0, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6595
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6596 if(newfd > -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6597 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6598 /* Add new connections to the set */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6599 newarray = (struct _seminfo *)malloc(sizeof(struct _seminfo)*(connectcount+1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6600 memcpy(newarray, array, sizeof(struct _seminfo)*(connectcount));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6601
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6602 newarray[connectcount].fd = newfd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6603 newarray[connectcount].waiting = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6604
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6605 connectcount++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6606
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6607 /* Replace old array with new one */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6608 free(array);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6609 array = newarray;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6610 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6611 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6612
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6613 /* Handle any events posted to the semaphore */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6614 for(z=0;z<connectcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6615 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6616 if(FD_ISSET(array[z].fd, &rd))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6617 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6618 if((bytesread = read(array[z].fd, &command, 1)) < 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6619 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6620 struct _seminfo *newarray;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6621
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6622 /* Remove this connection from the set */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6623 newarray = (struct _seminfo *)malloc(sizeof(struct _seminfo)*(connectcount-1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6624 if(!z)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6625 memcpy(newarray, &array[1], sizeof(struct _seminfo)*(connectcount-1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6626 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6627 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6628 memcpy(newarray, array, sizeof(struct _seminfo)*z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6629 if(z!=(connectcount-1))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6630 memcpy(&newarray[z], &array[z+1], sizeof(struct _seminfo)*(z-connectcount-1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6631 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6632 connectcount--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6633
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6634 /* Replace old array with new one */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6635 free(array);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6636 array = newarray;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6637 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6638 else if(bytesread == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6639 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6640 switch(command)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6641 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6642 case 0:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6643 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6644 /* Reset */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6645 posted = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6646 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6647 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6648 case 1:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6649 /* Post */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6650 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6651 int s;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6652 char tmp = (char)0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6653
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6654 posted = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6655
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6656 for(s=0;s<connectcount;s++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6657 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6658 /* The semaphore has been posted so
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6659 * we tell all the waiting threads to
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6660 * continue.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6661 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6662 if(array[s].waiting)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6663 result = write(array[s].fd, &tmp, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6664 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6665 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6666 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6667 case 2:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6668 /* Wait */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6669 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6670 char tmp = (char)0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6671
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6672 array[z].waiting = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6673
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6674 /* If we are posted exit immeditately */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6675 if(posted)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6676 result = write(array[z].fd, &tmp, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6677 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6678 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6679 case 3:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6680 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6681 /* Done Waiting */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6682 array[z].waiting = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6683 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6684 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6685 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6686 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6687 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6688 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6689 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6690 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6691
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6692 /* Using domain sockets on unix for IPC */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6693 /* Create a named event semaphore which can be
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6694 * opened from other processes.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6695 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6696 * eve: Pointer to an event handle to receive handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6697 * name: Name given to semaphore which can be opened
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6698 * by other processes.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6699 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6700 HEV dw_named_event_new(const char *name)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6701 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6702 struct sockaddr_un un;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6703 int ev, *tmpsock = (int *)malloc(sizeof(int)*2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6704 DWTID dwthread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6705
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6706 if(!tmpsock)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6707 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6708
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6709 tmpsock[0] = socket(AF_UNIX, SOCK_STREAM, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6710 ev = socket(AF_UNIX, SOCK_STREAM, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6711 memset(&un, 0, sizeof(un));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6712 un.sun_family=AF_UNIX;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6713 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6714 strcpy(un.sun_path, "/tmp/.dw/");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6715 strcat(un.sun_path, name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6716
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6717 /* just to be safe, this should be changed
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6718 * to support multiple instances.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6719 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6720 remove(un.sun_path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6721
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6722 bind(tmpsock[0], (struct sockaddr *)&un, sizeof(un));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6723 listen(tmpsock[0], 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6724 connect(ev, (struct sockaddr *)&un, sizeof(un));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6725 tmpsock[1] = accept(tmpsock[0], 0, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6726
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6727 if(tmpsock[0] < 0 || tmpsock[1] < 0 || ev < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6728 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6729 if(tmpsock[0] > -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6730 close(tmpsock[0]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6731 if(tmpsock[1] > -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6732 close(tmpsock[1]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6733 if(ev > -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6734 close(ev);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6735 free(tmpsock);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6736 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6737 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6738
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6739 /* Create a thread to handle this event semaphore */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6740 pthread_create(&dwthread, NULL, (void *)_handle_sem, (void *)tmpsock);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6741 return GINT_TO_POINTER(ev);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6742 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6743
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6744 /* Open an already existing named event semaphore.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6745 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6746 * eve: Pointer to an event handle to receive handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6747 * name: Name given to semaphore which can be opened
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6748 * by other processes.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6749 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6750 HEV dw_named_event_get(const char *name)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6751 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6752 struct sockaddr_un un;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6753 int ev = socket(AF_UNIX, SOCK_STREAM, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6754 if(ev < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6755 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6756
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6757 un.sun_family=AF_UNIX;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6758 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6759 strcpy(un.sun_path, "/tmp/.dw/");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6760 strcat(un.sun_path, name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6761 connect(ev, (struct sockaddr *)&un, sizeof(un));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6762 return GINT_TO_POINTER(ev);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6763 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6764
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6765 /* Resets the event semaphore so threads who call wait
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6766 * on this semaphore will block.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6767 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6768 * eve: Handle to the semaphore obtained by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6769 * an open or create call.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6770 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6771 int dw_named_event_reset(HEV eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6772 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6773 /* signal reset */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6774 char tmp = (char)0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6775
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6776 if(GPOINTER_TO_INT(eve) < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6777 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6778
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6779 if(write(GPOINTER_TO_INT(eve), &tmp, 1) == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6780 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6781 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6782 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6783
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6784 /* Sets the posted state of an event semaphore, any threads
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6785 * waiting on the semaphore will no longer block.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6786 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6787 * eve: Handle to the semaphore obtained by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6788 * an open or create call.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6789 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6790 int dw_named_event_post(HEV eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6791 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6792
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6793 /* signal post */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6794 char tmp = (char)1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6795
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6796 if(GPOINTER_TO_INT(eve) < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6797 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6798
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6799 if(write(GPOINTER_TO_INT(eve), &tmp, 1) == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6800 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6801 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6802 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6803
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6804 /* Waits on the specified semaphore until it becomes
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6805 * posted, or returns immediately if it already is posted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6806 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6807 * eve: Handle to the semaphore obtained by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6808 * an open or create call.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6809 * timeout: Number of milliseconds before timing out
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6810 * or -1 if indefinite.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6811 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6812 int dw_named_event_wait(HEV eve, unsigned long timeout)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6813 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6814 fd_set rd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6815 struct timeval tv, *useme = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6816 int retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6817 char tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6818
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6819 if(GPOINTER_TO_INT(eve) < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6820 return DW_ERROR_NON_INIT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6821
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6822 /* Set the timout or infinite */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6823 if(timeout != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6824 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6825 tv.tv_sec = timeout / 1000;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6826 tv.tv_usec = timeout % 1000;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6827
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6828 useme = &tv;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6829 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6830
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6831 FD_ZERO(&rd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6832 FD_SET(GPOINTER_TO_INT(eve), &rd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6833
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6834 /* Signal wait */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6835 tmp = (char)2;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6836 retval = write(GPOINTER_TO_INT(eve), &tmp, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6837
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6838 if(retval == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6839 retval = select(GPOINTER_TO_INT(eve)+1, &rd, NULL, NULL, useme);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6840
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6841 /* Signal done waiting. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6842 tmp = (char)3;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6843 if(retval == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6844 retval = write(GPOINTER_TO_INT(eve), &tmp, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6845
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6846 if(retval == 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6847 return DW_ERROR_TIMEOUT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6848 else if(retval == -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6849 return DW_ERROR_INTERRUPT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6850
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6851 /* Clear the entry from the pipe so
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6852 * we don't loop endlessly. :)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6853 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6854 if(read(GPOINTER_TO_INT(eve), &tmp, 1) == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6855 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6856 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6857 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6858
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6859 /* Release this semaphore, if there are no more open
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6860 * handles on this semaphore the semaphore will be destroyed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6861 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6862 * eve: Handle to the semaphore obtained by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6863 * an open or create call.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6864 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6865 int dw_named_event_close(HEV eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6866 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6867 /* Finally close the domain socket,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6868 * cleanup will continue in _handle_sem.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6869 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6870 close(GPOINTER_TO_INT(eve));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6871 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6872 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6873
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6874 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6875 * Generally an internal function called from a newly created
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6876 * thread to setup the Dynamic Windows environment for the thread.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6877 * However it is exported so language bindings can call it when
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6878 * they create threads that require access to Dynamic Windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6879 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6880 void API _dw_init_thread(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6881 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6882 GdkRGBA *foreground = malloc(sizeof(GdkRGBA));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6883
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6884 foreground->alpha = foreground->red = foreground->green = foreground->blue = 0.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6885 pthread_setspecific(_dw_fg_color_key, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6886 pthread_setspecific(_dw_bg_color_key, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6887 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6888
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6889 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6890 * Generally an internal function called from a terminating
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6891 * thread to cleanup the Dynamic Windows environment for the thread.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6892 * However it is exported so language bindings can call it when
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6893 * they exit threads that require access to Dynamic Windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6894 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6895 void API _dw_deinit_thread(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6896 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6897 GdkRGBA *foreground, *background;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6898
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6899 if((foreground = pthread_getspecific(_dw_fg_color_key)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6900 free(foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6901 if((background = pthread_getspecific(_dw_bg_color_key)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6902 free(background);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6903 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6904
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6905 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6906 * Setup thread independent color sets.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6907 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6908 void _dwthreadstart(void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6909 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6910 void (*threadfunc)(void *) = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6911 void **tmp = (void **)data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6912
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6913 threadfunc = (void (*)(void *))tmp[0];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6914
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6915 /* Initialize colors */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6916 _dw_init_thread();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6917
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6918 threadfunc(tmp[1]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6919 free(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6920
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6921 /* Free colors */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6922 _dw_deinit_thread();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6923 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6924
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6925 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6926 * Allocates a shared memory region with a name.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6927 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6928 * handle: A pointer to receive a SHM identifier.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6929 * dest: A pointer to a pointer to receive the memory address.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6930 * size: Size in bytes of the shared memory region to allocate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6931 * name: A string pointer to a unique memory name.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6932 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6933 HSHM dw_named_memory_new(void **dest, int size, const char *name)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6934 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6935 char namebuf[1025];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6936 struct _dw_unix_shm *handle = malloc(sizeof(struct _dw_unix_shm));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6937
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6938 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6939 snprintf(namebuf, 1024, "/tmp/.dw/%s", name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6940
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6941 if((handle->fd = open(namebuf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6942 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6943 free(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6944 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6945 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6946
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6947 if(ftruncate(handle->fd, size))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6948 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6949 close(handle->fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6950 free(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6951 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6952 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6953
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6954 /* attach the shared memory segment to our process's address space. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6955 *dest = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6956
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6957 if(*dest == MAP_FAILED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6958 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6959 close(handle->fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6960 *dest = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6961 free(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6962 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6963 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6964
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6965 handle->size = size;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6966 handle->sid = getsid(0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6967 handle->path = strdup(namebuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6968
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6969 return handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6970 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6971
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6972 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6973 * Aquires shared memory region with a name.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6974 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6975 * dest: A pointer to a pointer to receive the memory address.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6976 * size: Size in bytes of the shared memory region to requested.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6977 * name: A string pointer to a unique memory name.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6978 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6979 HSHM dw_named_memory_get(void **dest, int size, const char *name)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6980 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6981 char namebuf[1025];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6982 struct _dw_unix_shm *handle = malloc(sizeof(struct _dw_unix_shm));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6983
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6984 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6985 snprintf(namebuf, 1024, "/tmp/.dw/%s", name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6986
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6987 if((handle->fd = open(namebuf, O_RDWR)) < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6988 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6989 free(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6990 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6991 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6992
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6993 /* attach the shared memory segment to our process's address space. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6994 *dest = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6995
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6996 if(*dest == MAP_FAILED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6997 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6998 close(handle->fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6999 *dest = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7000 free(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7001 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7002 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7003
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7004 handle->size = size;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7005 handle->sid = -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7006 handle->path = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7007
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7008 return handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7009 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7010
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7011 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7012 * Frees a shared memory region previously allocated.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7013 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7014 * handle: Handle obtained from DB_named_memory_allocate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7015 * ptr: The memory address aquired with DB_named_memory_allocate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7016 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7017 int dw_named_memory_free(HSHM handle, void *ptr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7018 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7019 struct _dw_unix_shm *h = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7020 int rc = munmap(ptr, h->size);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7021
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7022 close(h->fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7023 if(h->path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7024 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7025 /* Only remove the actual file if we are the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7026 * creator of the file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7027 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7028 if(h->sid != -1 && h->sid == getsid(0))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7029 remove(h->path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7030 free(h->path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7031 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7032 return rc;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7033 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7034 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7035 * Creates a new thread with a starting point of func.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7036 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7037 * func: Function which will be run in the new thread.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7038 * data: Parameter(s) passed to the function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7039 * stack: Stack size of new thread (OS/2 and Windows only).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7040 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7041 DWTID dw_thread_new(void *func, void *data, int stack)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7042 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7043 DWTID gtkthread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7044 void **tmp = malloc(sizeof(void *) * 2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7045 int rc;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7046
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7047 tmp[0] = func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7048 tmp[1] = data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7049
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7050 rc = pthread_create(&gtkthread, NULL, (void *)_dwthreadstart, (void *)tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7051 if ( rc == 0 )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7052 return gtkthread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7053 return (DWTID)DW_ERROR_UNKNOWN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7054 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7055
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7056 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7057 * Ends execution of current thread immediately.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7058 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7059 void dw_thread_end(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7060 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7061 pthread_exit(NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7062 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7063
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7064 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7065 * Returns the current thread's ID.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7066 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7067 DWTID dw_thread_id(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7068 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7069 return (DWTID)pthread_self();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7070 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7071
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7072 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7073 * Cleanly terminates a DW session, should be signal handler safe.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7074 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7075 void dw_shutdown(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7076 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
7077 g_main_loop_unref(_DWMainLoop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7078 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7079
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7080 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7081 * Cleanly terminates a DW session, should be signal handler safe.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7082 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7083 * exitcode: Exit code reported to the operating system.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7084 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7085 void dw_exit(int exitcode)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7086 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
7087 dw_shutdown();
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7088 exit(exitcode);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7089 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7090
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7091 /* Internal function to get the recommended size of scrolled items */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7092 void _get_scrolled_size(GtkWidget *item, gint *thiswidth, gint *thisheight)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7093 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7094 GtkWidget *widget = g_object_get_data(G_OBJECT(item), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7095
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7096 *thisheight = *thiswidth = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7097
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7098 if(widget)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7099 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7100 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7101 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7102 /* Set to half for tree */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7103 *thiswidth = (int)((_DW_SCROLLED_MAX_WIDTH + _DW_SCROLLED_MIN_WIDTH)/2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7104 *thisheight = (int)((_DW_SCROLLED_MAX_HEIGHT + _DW_SCROLLED_MIN_HEIGHT)/2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7105 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7106 else if(GTK_IS_TEXT_VIEW(widget))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7107 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7108 unsigned long bytes;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7109 int height, width;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7110 char *buf, *ptr;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7111 int wrap = (gtk_text_view_get_wrap_mode(GTK_TEXT_VIEW(widget)) == GTK_WRAP_WORD);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7112 static char testtext[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7113 int hscrolled = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7114
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7115 *thiswidth = *thisheight = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7116
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7117 dw_mle_get_size(item, &bytes, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7118
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7119 ptr = buf = alloca(bytes + 2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7120 dw_mle_export(item, buf, 0, (int)bytes);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7121 buf[bytes] = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7122 strcat(buf, "\r");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7123
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7124 /* MLE */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7125 while((ptr = strstr(buf, "\r")))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7126 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7127 ptr[0] = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7128 width = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7129 if(strlen(buf))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7130 dw_font_text_extents_get(item, NULL, buf, &width, &height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7131 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7132 dw_font_text_extents_get(item, NULL, testtext, NULL, &height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7133
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7134 if(wrap && width > _DW_SCROLLED_MAX_WIDTH)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7135 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7136 *thiswidth = _DW_SCROLLED_MAX_WIDTH;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7137 *thisheight += height * (width / _DW_SCROLLED_MAX_WIDTH);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7138 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7139 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7140 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7141 if(width > *thiswidth)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7142 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7143 if(width > _DW_SCROLLED_MAX_WIDTH)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7144 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7145 *thiswidth = _DW_SCROLLED_MAX_WIDTH;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7146 hscrolled = TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7147 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7148 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7149 *thiswidth = width;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7150 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7151 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7152 *thisheight += height;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7153 if(ptr[1] == '\n')
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7154 buf = &ptr[2];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7155 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7156 buf = &ptr[1];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7157 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7158 if(hscrolled)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7159 *thisheight += 10;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7160 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7161 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7162 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7163 gtk_widget_measure(GTK_WIDGET(widget), GTK_ORIENTATION_HORIZONTAL, -1, thiswidth, NULL, NULL, NULL);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7164 gtk_widget_measure(GTK_WIDGET(widget), GTK_ORIENTATION_VERTICAL, -1, thisheight, NULL, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7165
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7166 *thisheight += 20;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7167 *thiswidth += 20;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7168 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7169 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7170 if(*thiswidth < _DW_SCROLLED_MIN_WIDTH)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7171 *thiswidth = _DW_SCROLLED_MIN_WIDTH;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7172 if(*thiswidth > _DW_SCROLLED_MAX_WIDTH)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7173 *thiswidth = _DW_SCROLLED_MAX_WIDTH;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7174 if(*thisheight < _DW_SCROLLED_MIN_HEIGHT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7175 *thisheight = _DW_SCROLLED_MIN_HEIGHT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7176 if(*thisheight > _DW_SCROLLED_MAX_HEIGHT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7177 *thisheight = _DW_SCROLLED_MAX_HEIGHT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7178 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7179
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7180 /* Internal box packing function called by the other 3 functions */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7181 void _dw_box_pack(HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad, char *funcname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7182 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7183 GtkWidget *tmp, *tmpitem, *image = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7184
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7185 if(!box)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7186 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7187
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7188 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7189 * If you try and pack an item into itself VERY bad things can happen; like at least an
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7190 * infinite loop on GTK! Lets be safe!
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7191 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7192 if(box == item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7193 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7194 dw_messagebox(funcname, DW_MB_OK|DW_MB_ERROR, "Danger! Danger! Will Robinson; box and item are the same!");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7195 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7196 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7197
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7198 /* If this is a special box, like: Window, Groupbox, Scrollbox...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7199 * get the internal box handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7200 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7201 if((tmp = g_object_get_data(G_OBJECT(box), "_dw_boxhandle")))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7202 box = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7203
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7204 /* Can't pack nothing with GTK, so create an empty label */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7205 if(!item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7206 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7207 item = gtk_label_new("");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7208 g_object_set_data(G_OBJECT(item), "_dw_padding", GINT_TO_POINTER(1));
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7209 gtk_widget_show(item);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7210 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7211 /* Due to GTK3 minimum size limitations, if we are packing a widget
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7212 * with an image, we need to scale the image down to fit the packed size.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7213 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7214 else if((image = g_object_get_data(G_OBJECT(item), "_dw_bitmap")))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7215 {
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7216 GdkPixbuf *pixbuf = g_object_get_data(G_OBJECT(image), "_dw_pixbuf");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7217
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7218 if(pixbuf)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7219 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7220 int pwidth = gdk_pixbuf_get_width(pixbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7221 int pheight = gdk_pixbuf_get_height(pixbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7222
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7223 if(width == -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7224 width = pwidth;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7225 if(height == -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7226 height = pheight;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7227
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7228 if(pwidth > width || pheight > height)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7229 pixbuf = gdk_pixbuf_scale_simple(pixbuf, pwidth > width ? width : pwidth, pheight > height ? height : pheight, GDK_INTERP_BILINEAR);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7230 gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7231 g_object_set_data(G_OBJECT(image), "_dw_pixbuf", pixbuf);
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7232 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7233 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7234
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7235 /* Check if the item to be packed is a special box */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7236 tmpitem = (GtkWidget *)g_object_get_data(G_OBJECT(item), "_dw_boxhandle");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7237
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7238 /* Make sure our target box is valid */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7239 if(GTK_IS_GRID(box))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7240 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7241 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7242 int boxtype = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxtype"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7243
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7244 /* If the item being packed is a box, then we use it's padding
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7245 * instead of the padding specified on the pack line, this is
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7246 * due to a bug in the OS/2 and Win32 renderer and a limitation
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7247 * of the GtkTable class.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7248 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7249 if(GTK_IS_GRID(item) || (tmpitem && GTK_IS_GRID(tmpitem)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7250 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7251 /* NOTE: I left in the ability to pack boxes with a size,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7252 * this eliminates that by forcing the size to 0.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7253 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7254 height = width = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7255 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7256
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7257 /* Do some sanity bounds checking */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7258 if(index < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7259 index = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7260 if(index > boxcount)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7261 index = boxcount;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7262
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7263 g_object_set_data(G_OBJECT(item), "_dw_table", box);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7264 /* Set the expand attribute on the widgets now instead of the container */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7265 gtk_widget_set_vexpand(item, vsize);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7266 gtk_widget_set_valign(item, vsize ? GTK_ALIGN_FILL : GTK_ALIGN_START);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7267 gtk_widget_set_hexpand(item, hsize);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7268 gtk_widget_set_halign(item, hsize ? GTK_ALIGN_FILL : GTK_ALIGN_START);
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
7269 /* Set pad for each margin direction on the widget */
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
7270 _dw_widget_set_pad(item, pad);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7271 /* Add to the grid using insert...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7272 * rows for vertical boxes and columns for horizontal.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7273 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7274 if(boxtype == DW_VERT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7275 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7276 gtk_grid_insert_row(GTK_GRID(box), index);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7277 gtk_grid_attach(GTK_GRID(box), item, 0, index, 1, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7278 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7279 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7280 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7281 gtk_grid_insert_column(GTK_GRID(box), index);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7282 gtk_grid_attach(GTK_GRID(box), item, index, 0, 1, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7283 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7284 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount + 1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7285 /* Special case for scrolled windows */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7286 if(GTK_IS_SCROLLED_WINDOW(item))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7287 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7288 gint scrolledwidth = 0, scrolledheight = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7289
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7290 /* Pre-run the calculation code for MLE/Container/Tree if needed */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7291 if((width < 1 && !hsize) || (height < 1 && !vsize))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7292 _get_scrolled_size(item, &scrolledwidth, &scrolledheight);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7293
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7294 if(width > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7295 gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(item), width);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7296 else if(!hsize)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7297 gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(item), scrolledwidth);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7298 if(height > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7299 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(item), height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7300 else if(!vsize)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7301 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(item), scrolledheight);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7302 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7303 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7304 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7305 /* Set the requested size of the widget */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7306 if(width == -1 && (GTK_IS_COMBO_BOX(item) || GTK_IS_ENTRY(item)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7307 gtk_widget_set_size_request(item, 150, height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7308 else if(width == -1 && GTK_IS_SPIN_BUTTON(item))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7309 gtk_widget_set_size_request(item, 50, height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7310 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7311 gtk_widget_set_size_request(item, width, height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7312 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7313 if(GTK_IS_TOGGLE_BUTTON(item))
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7314 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7315 GtkToggleButton *groupstart = (GtkToggleButton *)g_object_get_data(G_OBJECT(box), "_dw_group");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7316
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7317 if(groupstart)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7318 gtk_toggle_button_set_group(GTK_TOGGLE_BUTTON(item), groupstart);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7319 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7320 g_object_set_data(G_OBJECT(box), "_dw_group", (gpointer)item);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7321 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7322 /* If we previously incremented the reference count... drop it now that it is packed */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7323 if(g_object_get_data(G_OBJECT(item), "_dw_refed"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7324 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7325 g_object_unref(G_OBJECT(item));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7326 g_object_set_data(G_OBJECT(item), "_dw_refed", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7327 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7328 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7329 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7330
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7331 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7332 * Remove windows (widgets) from the box they are packed into.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7333 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7334 * handle: Window handle of the packed item to be removed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7335 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7336 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7337 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7338 int API dw_box_unpack(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7339 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7340 int retcode = DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7341
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7342 if(GTK_IS_WIDGET(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7343 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7344 GtkWidget *box, *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7345 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_eventbox");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7346
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7347 /* Handle the invisible event box if it exists */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7348 if(eventbox && GTK_IS_WIDGET(eventbox))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7349 handle2 = eventbox;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7350
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7351 /* Check if we are removing a widget from a box */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7352 if((box = gtk_widget_get_parent(handle2)) && GTK_IS_GRID(box))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7353 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7354 /* Get the number of items in the box... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7355 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7356 int boxtype = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxtype"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7357
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7358 if(boxcount > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7359 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7360 /* Decrease the count by 1 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7361 boxcount--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7362 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7363 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7364 /* If we haven't incremented the reference count... raise it before removal */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7365 if(!g_object_get_data(G_OBJECT(handle2), "_dw_refed"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7366 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7367 g_object_ref(G_OBJECT(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7368 g_object_set_data(G_OBJECT(handle2), "_dw_refed", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7369 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7370 /* Remove the widget from the box */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7371 /* Figure out where in the grid this widget is and remove that row/column */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7372 if(boxtype == DW_VERT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7373 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7374 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7375
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7376 for(z=0;z<boxcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7377 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7378 if(gtk_grid_get_child_at(GTK_GRID(box), 0, z) == handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7379 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7380 gtk_grid_remove_row(GTK_GRID(box), z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7381 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7382 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7383 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7384 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7385 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7386 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7387 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7388
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7389 for(z=0;z<boxcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7390 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7391 if(gtk_grid_get_child_at(GTK_GRID(box), z, 0) == handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7392 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7393 gtk_grid_remove_column(GTK_GRID(box), z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7394 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7395 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7396 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7397 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7398 retcode = DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7399 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7400 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7401 return retcode;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7402 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7403
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7404 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7405 * Remove windows (widgets) from a box at an arbitrary location.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7406 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7407 * box: Window handle of the box to be removed from.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7408 * index: 0 based index of packed items.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7409 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7410 * Handle to the removed item on success, 0 on failure or padding.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7411 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7412 HWND API dw_box_unpack_at_index(HWND box, int index)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7413 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7414 HWND retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7415
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7416 /* Check if we are removing a widget from a box */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7417 if(GTK_IS_GRID(box))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7418 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7419 /* Get the number of items in the box... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7420 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7421 int boxtype = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxtype"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7422 GtkWidget *item = (boxtype == DW_VERT) ? gtk_grid_get_child_at(GTK_GRID(box), 0, index) : gtk_grid_get_child_at(GTK_GRID(box), index, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7423
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7424 if(boxcount > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7425 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7426 /* Decrease the count by 1 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7427 boxcount--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7428 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7429 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7430 /* If we haven't incremented the reference count... raise it before removal */
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
7431 if(item && g_object_get_data(G_OBJECT(item), "_dw_padding") && GTK_IS_WIDGET(item))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
7432 g_object_unref(G_OBJECT(item));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7433 else if(item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7434 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7435 if(!g_object_get_data(G_OBJECT(item), "_dw_refed"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7436 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7437 g_object_ref(G_OBJECT(item));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7438 g_object_set_data(G_OBJECT(item), "_dw_refed", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7439 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7440 /* Remove the widget from the box */
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7441 gtk_grid_remove(GTK_GRID(box), item);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7442 if(boxtype == DW_VERT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7443 gtk_grid_remove_row(GTK_GRID(box), index);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7444 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7445 gtk_grid_remove_column(GTK_GRID(box), index);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7446 retval = item;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7447 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7448 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7449 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7450 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7451
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7452 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7453 * Pack windows (widgets) into a box at an arbitrary location.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7454 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7455 * box: Window handle of the box to be packed into.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7456 * item: Window handle of the item to pack.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7457 * index: 0 based index of packed items.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7458 * width: Width in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7459 * height: Height in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7460 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7461 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7462 * pad: Number of pixels of padding around the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7463 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7464 void API dw_box_pack_at_index(HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7465 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7466 _dw_box_pack(box, item, index, width, height, hsize, vsize, pad, "dw_box_pack_at_index()");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7467 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7468
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7469 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7470 * Pack windows (widgets) into a box from the start (or top).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7471 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7472 * box: Window handle of the box to be packed into.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7473 * item: Window handle of the item to pack.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7474 * width: Width in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7475 * height: Height in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7476 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7477 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7478 * pad: Number of pixels of padding around the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7479 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7480 void API dw_box_pack_start(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7481 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7482 /* 65536 is the table limit on GTK...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7483 * seems like a high enough value we will never hit it here either.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7484 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7485 _dw_box_pack(box, item, 65536, width, height, hsize, vsize, pad, "dw_box_pack_start()");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7486 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7487
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7488 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7489 * Pack windows (widgets) into a box from the end (or bottom).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7490 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7491 * box: Window handle of the box to be packed into.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7492 * item: Window handle of the item to pack.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7493 * width: Width in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7494 * height: Height in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7495 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7496 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7497 * pad: Number of pixels of padding around the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7498 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7499 void API dw_box_pack_end(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7500 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7501 _dw_box_pack(box, item, 0, width, height, hsize, vsize, pad, "dw_box_pack_end()");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7502 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7503
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7504 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7505 * Sets the size of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7506 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7507 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7508 * width: New width in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7509 * height: New height in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7510 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7511 void dw_window_set_size(HWND handle, unsigned long width, unsigned long height)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7512 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7513 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7514 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7515
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7516 if(GTK_IS_WINDOW(handle))
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7517 gtk_window_set_default_size(GTK_WINDOW(handle), width, height);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7518 else
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7519 gtk_widget_set_size_request(GTK_WIDGET(handle), width, height);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7520 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7521
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7522 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7523 * Gets the size the system thinks the widget should be.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7524 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7525 * handle: Window handle of the item to be back.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7526 * width: Width in pixels of the item or NULL if not needed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7527 * height: Height in pixels of the item or NULL if not needed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7528 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7529 void API dw_window_get_preferred_size(HWND handle, int *width, int *height)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7530 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7531 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7532 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7533 gint scrolledwidth, scrolledheight;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7534
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7535 _get_scrolled_size(handle, &scrolledwidth, &scrolledheight);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7536
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7537 if(width)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7538 *width = scrolledwidth;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7539 if(height)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7540 *height = scrolledheight;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7541 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7542 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7543 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7544 if(width)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7545 gtk_widget_measure(GTK_WIDGET(handle), GTK_ORIENTATION_HORIZONTAL, -1, width, NULL, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7546 if(height)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7547 gtk_widget_measure(GTK_WIDGET(handle), GTK_ORIENTATION_VERTICAL, -1, height, NULL, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7548 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7549 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7550
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7551 /* Internal version to simplify the code with multiple versions of GTK */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7552 int _dw_screen_width(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7553 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7554 GdkDisplay *display = gdk_display_get_default();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7555
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7556 if(display)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7557 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7558 GListModel *monitors = gdk_display_get_monitors(display);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7559 GdkMonitor *monitor = GDK_MONITOR(g_list_model_get_object(monitors, 0));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7560
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7561 if(monitor)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7562 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7563 GdkRectangle rc = { 0, 0, 0 ,0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7564 gdk_monitor_get_geometry(monitor, &rc);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7565 return rc.width;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7566 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7567 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7568 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7569 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7570
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7571 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7572 * Returns the width of the screen.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7573 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7574 int dw_screen_width(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7575 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7576 return _dw_screen_width();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7577 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7578
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7579 /* Internal version to simplify the code with multiple versions of GTK */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7580 int _dw_screen_height(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7581 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7582 GdkDisplay *display = gdk_display_get_default();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7583
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7584 if(display)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7585 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7586 GListModel *monitors = gdk_display_get_monitors(display);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7587 GdkMonitor *monitor = GDK_MONITOR(g_list_model_get_object(monitors, 0));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7588
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7589 if(monitor)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7590 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7591 GdkRectangle rc = { 0, 0, 0 ,0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7592 gdk_monitor_get_geometry(monitor, &rc);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7593 return rc.height;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7594 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7595 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7596 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7597 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7598
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7599 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7600 * Returns the height of the screen.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7601 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7602 int dw_screen_height(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7603 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7604 return _dw_screen_height();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7605 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7606
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7607 /* This should return the current color depth */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7608 unsigned long dw_color_depth_get(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7609 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7610 /* TODO: Make this work on GTK4... with no GdkVisual */
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7611 return 32;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7612 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7613
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7614 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7615 * Sets the gravity of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7616 * Gravity controls which corner of the screen and window the position is relative to.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7617 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7618 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7619 * horz: DW_GRAV_LEFT (default), DW_GRAV_RIGHT or DW_GRAV_CENTER.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7620 * vert: DW_GRAV_TOP (default), DW_GRAV_BOTTOM or DW_GRAV_CENTER.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7621 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7622 void API dw_window_set_gravity(HWND handle, int horz, int vert)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7623 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7624 dw_window_set_data(handle, "_dw_grav_horz", DW_INT_TO_POINTER(horz));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7625 dw_window_set_data(handle, "_dw_grav_vert", DW_INT_TO_POINTER(vert));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7626 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7627
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7628 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7629 * Sets the position of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7630 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7631 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7632 * x: X location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7633 * y: Y location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7634 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7635 void dw_window_set_pos(HWND handle, long x, long y)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7636 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7637 /* TODO: Figure out how to do this in GTK4 with no GdkWindow */
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7638 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7639 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7640 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7641
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7642 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7643 * Sets the position and size of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7644 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7645 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7646 * x: X location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7647 * y: Y location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7648 * width: Width of the widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7649 * height: Height of the widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7650 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7651 void dw_window_set_pos_size(HWND handle, long x, long y, unsigned long width, unsigned long height)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7652 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7653 dw_window_set_size(handle, width, height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7654 dw_window_set_pos(handle, x, y);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7655 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7656
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7657 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7658 * Gets the position and size of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7659 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7660 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7661 * x: X location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7662 * y: Y location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7663 * width: Width of the widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7664 * height: Height of the widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7665 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7666 void dw_window_get_pos_size(HWND handle, long *x, long *y, ULONG *width, ULONG *height)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7667 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7668 /* TODO: Figure out how to do this in GTK4 with no GdkWindow */
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7669 if(!handle || !GTK_IS_WIDGET(handle))
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7670 return;
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7671
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7672 if(width)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7673 *width = (ULONG)gtk_widget_get_width(GTK_WIDGET(handle));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7674 if(height)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7675 *height = (ULONG)gtk_widget_get_height(GTK_WIDGET(handle));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7676 if(x)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7677 *x = 0;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7678 if(y)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7679 *y = 0;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7680 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7681
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7682 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7683 * Sets the style of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7684 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7685 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7686 * width: New width in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7687 * height: New height in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7688 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7689 void dw_window_set_style(HWND handle, unsigned long style, unsigned long mask)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7690 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7691 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7692
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7693 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7694 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7695 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7696 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7697 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7698 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7699 else if(GTK_IS_FRAME(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7700 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7701 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_label");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7702 if(tmp && GTK_IS_LABEL(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7703 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7704 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7705 else if(GTK_IS_BUTTON(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7706 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7707 if(mask & DW_BS_NOBORDER)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7708 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7709 /* TODO: Figure out how to do this in GTK4 with no Shadow or Relief */
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7710 if(style & DW_BS_NOBORDER)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7711 ;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7712 else
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7713 ;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7714 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7715 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7716 if(GTK_IS_LABEL(handle2))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7717 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7718 gfloat x=DW_LEFT, y=DW_CENTER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7719 /* horizontal... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7720 if ( style & DW_DT_CENTER )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7721 x = DW_CENTER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7722 if ( style & DW_DT_RIGHT )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7723 x = DW_RIGHT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7724 if ( style & DW_DT_LEFT )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7725 x = DW_LEFT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7726 /* vertical... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7727 if ( style & DW_DT_VCENTER )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7728 y = DW_CENTER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7729 if ( style & DW_DT_TOP )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7730 y = DW_TOP;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7731 if ( style & DW_DT_BOTTOM )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7732 y = DW_BOTTOM;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7733 gtk_label_set_xalign(GTK_LABEL(handle2), x);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7734 gtk_label_set_yalign(GTK_LABEL(handle2), y);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7735 if(style & DW_DT_WORDBREAK)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7736 gtk_label_set_wrap(GTK_LABEL(handle), TRUE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7737 }
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7738 if(G_IS_MENU_ITEM(handle2) && (mask & (DW_MIS_ENABLED | DW_MIS_DISABLED)))
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7739 {
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7740 GSimpleAction *action = g_object_get_data(G_OBJECT(handle2), "_dw_action");
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7741
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7742 if((style & DW_MIS_ENABLED) || (style & DW_MIS_DISABLED))
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7743 {
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7744 if(style & DW_MIS_ENABLED)
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7745 g_simple_action_set_enabled(action, TRUE);
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7746 else
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7747 g_simple_action_set_enabled(action, FALSE);
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7748 }
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
7749 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7750 /* TODO: Convert to GMenuModel */
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7751 #if GTK3
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7752 if(GTK_IS_CHECK_MENU_ITEM(handle2) && (mask & (DW_MIS_CHECKED | DW_MIS_UNCHECKED))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7753 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7754 int check = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7755
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7756 if ( style & DW_MIS_CHECKED )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7757 check = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7758
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7759 _dw_ignore_click = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7760 if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(handle2)) != check)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7761 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(handle2), check);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7762 _dw_ignore_click = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7763 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
7764 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7765 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7766
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7767 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7768 * Adds a new page to specified notebook.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7769 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7770 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7771 * flags: Any additional page creation flags.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7772 * front: If TRUE page is added at the beginning.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7773 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7774 unsigned long dw_notebook_page_new(HWND handle, unsigned long flags, int front)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7775 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7776 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7777 GtkWidget **pagearray;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7778
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7779 pagearray = (GtkWidget **)g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7780
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7781 if(pagearray)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7782 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7783 for(z=0;z<256;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7784 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7785 if(!pagearray[z])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7786 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7787 char text[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7788 int num = z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7789
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7790 if(front)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7791 num |= 1 << 16;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7792
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7793 snprintf(text, 100, "_dw_page%d", z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7794 /* Save the real id and the creation flags */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7795 g_object_set_data(G_OBJECT(handle), text, GINT_TO_POINTER(num));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7796 return z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7797 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7798 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7799 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7800
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7801 /* Hopefully this won't happen. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7802 return 256;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7803 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7804
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7805 /* Return the physical page id from the logical page id */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7806 int _get_physical_page(HWND handle, unsigned long pageid)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7807 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7808 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7809 GtkWidget *thispage, **pagearray = g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7810
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7811 if(pagearray)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7812 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7813 for(z=0;z<256;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7814 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7815 if((thispage = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), z)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7816 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7817 if(thispage == pagearray[pageid])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7818 return z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7819 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7820 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7821 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7822 return 256;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7823 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7824
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7825 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7826 * Remove a page from a notebook.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7827 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7828 * handle: Handle to the notebook widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7829 * pageid: ID of the page to be destroyed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7830 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7831 void dw_notebook_page_destroy(HWND handle, unsigned int pageid)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7832 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7833 int realpage;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7834 GtkWidget **pagearray;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7835
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7836 realpage = _get_physical_page(handle, pageid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7837 if(realpage > -1 && realpage < 256)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7838 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7839 gtk_notebook_remove_page(GTK_NOTEBOOK(handle), realpage);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7840 if((pagearray = g_object_get_data(G_OBJECT(handle), "_dw_pagearray")))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7841 pagearray[pageid] = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7842 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7843 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7844
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7845 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7846 * Queries the currently visible page ID.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7847 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7848 * handle: Handle to the notebook widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7849 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7850 unsigned long dw_notebook_page_get(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7851 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7852 int retval, phys;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7853
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7854 phys = gtk_notebook_get_current_page(GTK_NOTEBOOK(handle));
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
7855 retval = _dw_get_logical_page(handle, phys);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7856 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7857 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7858
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7859 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7860 * Sets the currently visibale page ID.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7861 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7862 * handle: Handle to the notebook widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7863 * pageid: ID of the page to be made visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7864 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7865 void dw_notebook_page_set(HWND handle, unsigned int pageid)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7866 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7867 int realpage;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7868
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7869 realpage = _get_physical_page(handle, pageid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7870 if(realpage > -1 && realpage < 256)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7871 gtk_notebook_set_current_page(GTK_NOTEBOOK(handle), pageid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7872 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7873
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7874
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7875 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7876 * Sets the text on the specified notebook tab.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7877 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7878 * handle: Notebook handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7879 * pageid: Page ID of the tab to set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7880 * text: Pointer to the text to set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7881 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7882 void dw_notebook_page_set_text(HWND handle, unsigned long pageid, const char *text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7883 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7884 GtkWidget *child;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7885 int realpage;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7886
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7887 realpage = _get_physical_page(handle, pageid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7888 if(realpage < 0 || realpage > 255)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7889 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7890 char ptext[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7891 int num;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7892
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7893 snprintf(ptext, 100, "_dw_page%d", (int)pageid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7894 num = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), ptext));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7895 realpage = 0xFF & num;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7896 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7897
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7898 if(realpage > -1 && realpage < 256)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7899 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7900 child = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), realpage);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7901 if(child)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7902 gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(handle), child, text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7903 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7904 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7905
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7906 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7907 * Sets the text on the specified notebook tab status area.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7908 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7909 * handle: Notebook handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7910 * pageid: Page ID of the tab to set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7911 * text: Pointer to the text to set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7912 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7913 void dw_notebook_page_set_status_text(HWND handle, unsigned long pageid, const char *text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7914 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7915 /* TODO (if possible) */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7916 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7917
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7918 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7919 * Packs the specified box into the notebook page.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7920 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7921 * handle: Handle to the notebook to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7922 * pageid: Page ID in the notebook which is being packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7923 * page: Box handle to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7924 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7925 void dw_notebook_pack(HWND handle, unsigned long pageid, HWND page)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7926 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7927 GtkWidget *label, *child, *oldlabel, **pagearray;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7928 const gchar *text = NULL;
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
7929 int num, z, realpage = -1;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7930 char ptext[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7931
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7932 snprintf(ptext, 100, "_dw_page%d", (int)pageid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7933 num = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), ptext));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7934 g_object_set_data(G_OBJECT(handle), ptext, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7935 pagearray = (GtkWidget **)g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7936
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7937 if(!pagearray)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7938 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7939
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7940 /* The page already exists... so get it's current page */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7941 if(pagearray[pageid])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7942 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7943 for(z=0;z<256;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7944 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7945 child = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7946 if(child == pagearray[pageid])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7947 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7948 oldlabel = gtk_notebook_get_tab_label(GTK_NOTEBOOK(handle), child);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7949 if(oldlabel)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7950 text = gtk_label_get_text(GTK_LABEL(oldlabel));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7951 gtk_notebook_remove_page(GTK_NOTEBOOK(handle), z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7952 realpage = z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7953 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7954 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7955 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7956 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7957
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7958 pagearray[pageid] = page;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7959
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7960 label = gtk_label_new(text ? text : "");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7961
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7962 if(realpage != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7963 gtk_notebook_insert_page(GTK_NOTEBOOK(handle), page, label, realpage);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7964 else if(num & ~(0xFF))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7965 gtk_notebook_insert_page(GTK_NOTEBOOK(handle), page, label, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7966 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7967 gtk_notebook_insert_page(GTK_NOTEBOOK(handle), page, label, 256);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7968 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7969
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7970 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7971 * Appends the specified text to the listbox's (or combobox) entry list.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7972 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7973 * handle: Handle to the listbox to be appended to.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7974 * text: Text to append into listbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7975 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7976 void dw_listbox_append(HWND handle, const char *text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7977 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7978 dw_listbox_insert(handle, text, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7979 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7980
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7981 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7982 * Inserts the specified text int the listbox's (or combobox) entry list at the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7983 * position indicated.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7984 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7985 * handle: Handle to the listbox to be appended to.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7986 * text: Text to insert into listbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7987 * pos: 0-based index into listbox. -1 will append
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7988 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7989 void dw_listbox_insert(HWND handle, const char *text, int pos)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7990 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7991 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7992 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7993
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7994 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7995 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7996 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7997 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7998 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7999 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8000 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8001 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8002 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8003 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8004
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8005 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8006 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8007 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8008 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8009 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8010
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8011 if(!store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8012 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8013
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8014 if(pos < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8015 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8016 /* Insert an entry at the end */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8017 gtk_list_store_append(store, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8018 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8019 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8020 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8021 /* Insert at position */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8022 gtk_list_store_insert(store, &iter, pos);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8023 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8024 gtk_list_store_set (store, &iter, 0, text, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8025 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8026 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8027
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8028 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8029 * Appends the specified text items to the listbox's (or combobox) entry list.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8030 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8031 * handle: Handle to the listbox to be appended to.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8032 * text: Text strings to append into listbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8033 * count: Number of text strings to append
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8034 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8035 void dw_listbox_list_append(HWND handle, char **text, int count)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8036 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8037 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8038 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8039
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8040 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8041 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8042 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8043 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8044 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8045 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8046 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8047 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8048 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8049 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8050 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8051
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8052 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8053 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8054 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8055 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8056 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8057
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8058 if(!store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8059 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8060
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8061 /* Insert entries at the end */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8062 for(z=0;z<count;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8063 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8064 gtk_list_store_append(store, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8065 gtk_list_store_set (store, &iter, 0, text[z], -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8066 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8067 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8068 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8069
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8070 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8071 * Clears the listbox's (or combobox) list of all entries.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8072 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8073 * handle: Handle to the listbox to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8074 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8075 void dw_listbox_clear(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8076 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8077 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8078 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8079
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8080 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8081 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8082 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8083 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8084 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8085 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8086 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8087 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8088 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8089 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8090 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8091 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8092 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8093 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8094
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8095 if(!store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8096 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8097 /* Clear the list */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8098 gtk_list_store_clear(store);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8099 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8100 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8101
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8102 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8103 * Returns the listbox's item count.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8104 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8105 * handle: Handle to the listbox to be counted
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8106 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8107 int dw_listbox_count(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8108 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8109 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8110 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8111 int retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8112
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8113 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8114 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8115 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8116 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8117 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8118 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8119 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8120 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8121 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8122 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8123 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8124 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8125 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8126 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8127
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8128 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8129 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8130 /* Get the number of children at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8131 retval = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8132 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8133 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8134 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8135 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8136
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8137 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8138 * Sets the topmost item in the viewport.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8139 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8140 * handle: Handle to the listbox to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8141 * top: Index to the top item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8142 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8143 void dw_listbox_set_top(HWND handle, int top)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8144 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8145 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8146
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8147 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8148 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8149 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8150 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8151 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8152 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8153 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8154 if(handle2 && GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8155 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8156 GtkAdjustment *adjust = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8157 GtkListStore *store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8158
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8159 if(store && adjust)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8160 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8161 /* Get the number of children at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8162 gint rowcount = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8163 gdouble pagesize = gtk_adjustment_get_page_size(adjust);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8164 gdouble upper = gtk_adjustment_get_upper(adjust) - pagesize;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8165 gdouble lower = gtk_adjustment_get_lower(adjust);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8166 gdouble change;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8167
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8168 /* Safety check */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8169 if(rowcount < 2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8170 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8171
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8172 /* Verify the range */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8173 rowcount--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8174 if(top > rowcount)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8175 top = rowcount;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8176
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8177 change = ((gdouble)top/(gdouble)rowcount) * (upper - lower);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8178
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8179 gtk_adjustment_set_value(adjust, change + lower);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8180 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8181 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8182 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8183
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8184 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8185 * Copies the given index item's text into buffer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8186 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8187 * handle: Handle to the listbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8188 * index: Index into the list to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8189 * buffer: Buffer where text will be copied.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8190 * length: Length of the buffer (including NULL).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8191 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8192 void dw_listbox_get_text(HWND handle, unsigned int index, char *buffer, unsigned int length)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8193 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8194 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8195 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8196
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8197 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8198 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8199 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8200 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8201 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8202 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8203 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8204 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8205 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8206 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8207 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8208 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8209 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8210 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8211
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8212 if(store && index < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8213 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8214 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8215
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8216 /* Get the nth child at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8217 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8218 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8219 /* Get the text */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8220 gchar *text;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8221 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, _DW_DATA_TYPE_STRING, &text, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8222 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8223 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8224 strncpy(buffer, text, length);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8225 g_free(text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8226 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8227 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8228 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8229 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8230 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8231 buffer[0] = '\0';
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8232 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8233
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8234 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8235 * Sets the text of a given listbox entry.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8236 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8237 * handle: Handle to the listbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8238 * index: Index into the list to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8239 * buffer: Buffer where text will be copied.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8240 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8241 void dw_listbox_set_text(HWND handle, unsigned int index, const char *buffer)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8242 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8243 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8244 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8245
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8246 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8247 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8248 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8249 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8250 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8251 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8252 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8253 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8254 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8255 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8256 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8257 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8258 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8259 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8260
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8261 if(store && index < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8262 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8263 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8265 /* Get the nth child at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8266 if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8267 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8268 /* Update the text */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8269 gtk_list_store_set(store, &iter, buffer);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8270 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8271 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8272 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8273 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8274
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8275 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8276 * Returns the index to the current selected item or -1 when done.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8277 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8278 * handle: Handle to the listbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8279 * where: Either the previous return or -1 to restart.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8280 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8281 int dw_listbox_selected_multi(HWND handle, int where)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8282 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8283 GtkWidget *handle2;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8284 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8285 int retval = DW_LIT_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8286
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8287 handle2 = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8288
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8289 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8290 if(handle2 && GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8291 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8292
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8293 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8294 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8295 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8296 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8297
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8298 if(list)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8299 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8300 int counter = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8301 GtkTreePath *path = g_list_nth_data(list, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8302
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8303 while(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8304 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8305 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8306
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8307 if(indices && indices[0] > where)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8308 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8309 retval = indices[0];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8310 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8311 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8312
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8313 counter++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8314 path = g_list_nth_data(list, counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8315 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8316
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8317 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8318 g_list_free(list);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8319 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8320 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8321 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8322 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8323
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8324 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8325 * Returns the index to the item in the list currently selected.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8326 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8327 * handle: Handle to the listbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8328 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8329 int dw_listbox_selected(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8330 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8331 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8332 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8333 unsigned int retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8334
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8335 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8336 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8337 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8338 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8339 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8340 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8341 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8342 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8343 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8344 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8345 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8346 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8347 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8348 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8349
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8350 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8351 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8352 if(GTK_IS_TREE_VIEW(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8353 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8354 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8355 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8356 if(list)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8357 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8358 GtkTreePath *path = g_list_nth_data(list, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8359 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8360
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8361 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8362 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8363 retval = indices[0];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8364 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8365
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8366 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8367 g_list_free(list);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8368 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8369 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8370 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8371 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8372 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8373 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8374
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8375 if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(handle2), &iter))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8376 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8377 path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8378 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8379 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8380 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8381
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8382 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8383 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8384 retval = indices[0];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8385 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8386 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8387 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8388 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8389 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8390 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8391 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8392 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8393 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8394
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8395 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8396 * Sets the selection state of a given index.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8397 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8398 * handle: Handle to the listbox to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8399 * index: Item index.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8400 * state: TRUE if selected FALSE if unselected.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8401 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8402 void dw_listbox_select(HWND handle, int index, int state)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8403 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8404 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8405 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8406
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8407 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8408 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8409 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8410 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8411 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8412 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8413 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8414 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8415 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8416 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8417 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8418 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8419 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8420 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8421
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8422 if(store && index < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8423 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8424 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8425
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8426 /* Get the nth child at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8427 if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8428 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8429 if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8430 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8431 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(handle2), &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8432 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8433 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8434 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8435 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8436 if(state)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8437 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8438 /* Select the item */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8439 gtk_tree_selection_select_iter(sel, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8440 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8441 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8442 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8443 /* Deselect the item */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8444 gtk_tree_selection_unselect_iter(sel, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8445 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8446 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8447 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8448 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8449 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8450 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8451
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8452 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8453 * Deletes the item with given index from the list.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8454 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8455 * handle: Handle to the listbox to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8456 * index: Item index.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8457 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8458 void dw_listbox_delete(HWND handle, int index)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8459 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8460 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8461 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8462
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8463 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8464 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8465 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8466 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8467 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8468 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8469 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8470 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8471 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8472 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8473 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8474 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8475 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8476 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8477
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8478 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8479 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8480 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8481
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8482 /* Get the nth child at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8483 if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8484 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8485 gtk_list_store_remove(store, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8486 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8487 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8488 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8489 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8490
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8491 /* Function to do delayed positioning */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8492 gboolean _splitbar_set_percent(gpointer data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8493 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8494 GtkWidget *widget = data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8495 float *percent = (float *)g_object_get_data(G_OBJECT(widget), "_dw_percent");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8496
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8497 if(percent)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8498 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8499 GtkAllocation alloc;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8500
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8501 gtk_widget_get_allocation(widget, &alloc);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8502
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8503 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(widget)) == GTK_ORIENTATION_HORIZONTAL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8504 gtk_paned_set_position(GTK_PANED(widget), (int)(alloc.width * (*percent / 100.0)));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8505 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8506 gtk_paned_set_position(GTK_PANED(widget), (int)(alloc.height * (*percent / 100.0)));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8507 g_object_set_data(G_OBJECT(widget), "_dw_percent", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8508 free(percent);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8509 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8510 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8511 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8512
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8513 /* Reposition the bar according to the percentage */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8514 static gint _splitbar_size_allocate(GtkWidget *widget, GtkAllocation *event, gpointer data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8515 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8516 float *percent = (float *)g_object_get_data(G_OBJECT(widget), "_dw_percent");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8517
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8518 /* Prevent infinite recursion ;) */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8519 if(!percent || event->width < 20 || event->height < 20)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8520 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8521
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8522 g_idle_add(_splitbar_set_percent, widget);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8523 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8524 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8525
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8526 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8527 * Creates a splitbar window (widget) with given parameters.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8528 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8529 * type: Value can be DW_VERT or DW_HORZ.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8530 * topleft: Handle to the window to be top or left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8531 * bottomright: Handle to the window to be bottom or right.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8532 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8533 * A handle to a splitbar window or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8534 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8535 HWND dw_splitbar_new(int type, HWND topleft, HWND bottomright, unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8536 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8537 GtkWidget *tmp = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8538 float *percent = malloc(sizeof(float));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8539
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8540 tmp = gtk_paned_new(type == DW_HORZ ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8541 gtk_paned_set_start_child(GTK_PANED(tmp), topleft);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8542 gtk_paned_set_resize_start_child(GTK_PANED(tmp), TRUE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8543 gtk_paned_set_shrink_start_child(GTK_PANED(tmp), FALSE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8544 gtk_paned_set_end_child(GTK_PANED(tmp), bottomright);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8545 gtk_paned_set_resize_end_child(GTK_PANED(tmp), TRUE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8546 gtk_paned_set_shrink_end_child(GTK_PANED(tmp), FALSE);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8547 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8548 *percent = 50.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8549 g_object_set_data(G_OBJECT(tmp), "_dw_percent", (gpointer)percent);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8550 g_signal_connect(G_OBJECT(tmp), "size-allocate", G_CALLBACK(_splitbar_size_allocate), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8551 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8552 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8553 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8554
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8555 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8556 * Sets the position of a splitbar (pecentage).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8557 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8558 * handle: The handle to the splitbar returned by dw_splitbar_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8559 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8560 void dw_splitbar_set(HWND handle, float percent)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8561 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8562 float *mypercent = (float *)dw_window_get_data(handle, "_dw_percent");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8563 int size = 0, position;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8564
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8565 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(handle)) == GTK_ORIENTATION_HORIZONTAL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8566 size = gtk_widget_get_allocated_width(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8567 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8568 size = gtk_widget_get_allocated_height(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8569
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8570 if(mypercent)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8571 *mypercent = percent;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8572
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8573 if(size > 10)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8574 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8575 position = (int)((float)size * (percent / 100.0));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8576
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8577 gtk_paned_set_position(GTK_PANED(handle), position);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8578 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8579 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8580
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8581 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8582 * Gets the position of a splitbar (pecentage).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8583 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8584 * handle: The handle to the splitbar returned by dw_splitbar_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8585 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8586 float dw_splitbar_get(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8587 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8588 float *percent = (float *)dw_window_get_data(handle, "_dw_percent");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8589
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8590 if(percent)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8591 return *percent;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8592 return 0.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8593 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8594
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8595 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8596 * Creates a calendar window (widget) with given parameters.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8597 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8598 * id: Unique identifier for calendar widget
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8599 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8600 * A handle to a calendar window or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8601 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8602 HWND dw_calendar_new(unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8603 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8604 GtkWidget *tmp = gtk_calendar_new();
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8605 GTimeZone *tz = g_time_zone_new_local();
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8606 GDateTime *now = g_date_time_new_now(tz);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8607
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8608 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8609 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8610 /* select today */
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8611 gtk_calendar_set_show_day_names(GTK_CALENDAR(tmp), TRUE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8612 gtk_calendar_set_show_heading(GTK_CALENDAR(tmp), TRUE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8613 gtk_calendar_select_day(GTK_CALENDAR(tmp), now);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8614 g_date_time_unref(now);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8615 g_time_zone_unref(tz);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8616 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8617 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8618
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8619 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8620 * Sets the current date of a calendar
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8621 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8622 * handle: The handle to the calendar returned by dw_calendar_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8623 * year...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8624 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8625 void dw_calendar_set_date(HWND handle, unsigned int year, unsigned int month, unsigned int day)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8626 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8627 if(GTK_IS_CALENDAR(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8628 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8629 GTimeZone *tz = g_time_zone_new_local();
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8630 GDateTime *datetime = g_date_time_new(tz, year, month, day, 0, 0, 0);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8631 gtk_calendar_select_day(GTK_CALENDAR(handle), datetime);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8632 g_date_time_unref(datetime);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8633 g_time_zone_unref(tz);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8634 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8635 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8636
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8637 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8638 * Gets the position of a splitbar (pecentage).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8639 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8640 * handle: The handle to the splitbar returned by dw_splitbar_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8641 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8642 void dw_calendar_get_date(HWND handle, unsigned int *year, unsigned int *month, unsigned int *day)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8643 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8644 if(GTK_IS_CALENDAR(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8645 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8646 GDateTime *datetime = gtk_calendar_get_date(GTK_CALENDAR(handle));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8647 if(year)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8648 *year = g_date_time_get_year(datetime);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8649 if(month)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8650 *month = g_date_time_get_month(datetime);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8651 if(day)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8652 *day = g_date_time_get_day_of_month(datetime);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8653 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8654 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8655
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8656 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8657 * Sets the current focus item for a window/dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8658 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8659 * handle: Handle to the dialog item to be focused.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8660 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8661 * This is for use after showing the window/dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8662 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8663 void API dw_window_set_focus(HWND handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8664 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8665 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8666 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8667
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8668 gtk_widget_grab_focus(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8669 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8670
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8671 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8672 * Sets the default focus item for a window/dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8673 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8674 * window: Toplevel window or dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8675 * defaultitem: Handle to the dialog item to be default.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8676 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8677 * This is for use before showing the window/dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8678 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8679 void dw_window_default(HWND window, HWND defaultitem)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8680 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8681 if(!window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8682 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8683
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8684 g_object_set_data(G_OBJECT(window), "_dw_defaultitem", (gpointer)defaultitem);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8685 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8686
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8687 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8688 * Sets window to click the default dialog item when an ENTER is pressed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8689 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8690 * window: Window (widget) to look for the ENTER press.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8691 * next: Window (widget) to move to next (or click)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8692 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8693 void dw_window_click_default(HWND window, HWND next)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8694 {
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
8695 if(window && next && GTK_IS_WIDGET(window) && GTK_IS_WIDGET(next))
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
8696 {
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
8697 GtkEventController *controller = gtk_event_controller_key_new();
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
8698 gtk_widget_add_controller(GTK_WIDGET(window), controller);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
8699 g_signal_connect(G_OBJECT(controller), "key-pressed", G_CALLBACK(_dw_default_key_press_event), next);
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
8700 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8701 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8702
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8703
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8704 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8705 * Creates a new system notification if possible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8706 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8707 * title: The short title of the notification.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8708 * imagepath: Path to an image to display or NULL if none.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8709 * description: A longer description of the notification,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8710 * or NULL if none is necessary.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8711 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8712 * A handle to the notification which can be used to attach a "clicked" event if desired,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8713 * or NULL if it fails or notifications are not supported by the system.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8714 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8715 * This will create a system notification that will show in the notifaction panel
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8716 * on supported systems, which may be clicked to perform another task.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8717 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8718 HWND dw_notification_new(const char *title, const char *imagepath, const char *description, ...)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8719 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8720 GNotification *notification = g_notification_new(title);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8721
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8722 if(notification)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8723 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8724 if(description)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8725 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8726 va_list args;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8727 char outbuf[1025] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8728
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8729 va_start(args, description);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8730 vsnprintf(outbuf, 1024, description, args);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8731 va_end(args);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8732
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8733 g_notification_set_body(notification, outbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8734 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8735 if(imagepath)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8736 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8737 GFile *file = g_file_new_for_path(imagepath);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8738 GBytes *bytes = g_file_load_bytes(file, NULL, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8739
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8740 if(bytes)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8741 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8742 GIcon *icon = g_bytes_icon_new(bytes);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8743
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8744 if(icon)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8745 g_notification_set_icon(notification, G_ICON(icon));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8746 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8747 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8748 g_notification_set_default_action_and_target(notification, "app.notification", "t",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8749 (guint64)DW_POINTER_TO_ULONGLONG(notification));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8750 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8751 return (HWND)notification;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8752 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8753
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8754 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8755 * Sends a notification created by dw_notification_new() after attaching signal handler.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8756 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8757 * notification: The handle to the notification returned by dw_notification_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8758 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8759 * DW_ERROR_NONE on success, DW_ERROR_UNKNOWN on error or not supported.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8760 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8761 int dw_notification_send(HWND notification)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8762 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8763 if(notification)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8764 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8765 char id[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8766
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8767 /* Generate a unique ID based on the notification handle,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8768 * so we can use it to remove the notification in dw_window_destroy().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8769 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8770 snprintf(id, 100, "dw-notification-%llu", DW_POINTER_TO_ULONGLONG(notification));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8771 g_application_send_notification(_DWApp, id, (GNotification *)notification);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8772 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8773 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8774 return DW_ERROR_UNKNOWN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8775 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8776
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8777 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8778 * Returns some information about the current operating environment.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8779 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8780 * env: Pointer to a DWEnv struct.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8781 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8782 void dw_environment_query(DWEnv *env)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8783 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8784 struct utsname name;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8785 char tempbuf[_DW_ENV_STRING_SIZE] = { 0 }, *dot;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8786
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8787 uname(&name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8788 memset(env, '\0', sizeof(DWEnv));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8789 strncpy(env->osName, name.sysname, sizeof(env->osName)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8790 strncpy(tempbuf, name.release, sizeof(tempbuf)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8791
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8792 strncpy(env->buildDate, __DATE__, sizeof(env->buildDate)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8793 strncpy(env->buildTime, __TIME__, sizeof(env->buildTime)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8794 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8795 strncpy(env->htmlEngine, "WEBKIT2", sizeof(env->htmlEngine)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8796 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8797 strncpy(env->htmlEngine, "N/A", sizeof(env->htmlEngine)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8798 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8799 env->DWMajorVersion = DW_MAJOR_VERSION;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8800 env->DWMinorVersion = DW_MINOR_VERSION;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8801 #ifdef VER_REV
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8802 env->DWSubVersion = VER_REV;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8803 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8804 env->DWSubVersion = DW_SUB_VERSION;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8805 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8806
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8807 if((dot = strchr(tempbuf, '.')) != NULL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8808 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8809 *dot = '\0';
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8810 env->MajorVersion = atoi(tempbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8811 env->MinorVersion = atoi(&dot[1]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8812 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8813 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8814 env->MajorVersion = atoi(tempbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8815 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8816
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8817 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8818 * Opens a file dialog and queries user selection.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8819 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8820 * title: Title bar text for dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8821 * defpath: The default path of the open dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8822 * ext: Default file extention.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8823 * flags: DW_FILE_OPEN or DW_FILE_SAVE or DW_DIRECTORY_OPEN
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8824 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8825 * NULL on error. A malloced buffer containing
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8826 * the file path on success.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8827 *
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8828 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8829 char *dw_file_browse(const char *title, const char *defpath, const char *ext, int flags)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8830 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8831 GtkWidget *filew;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8832
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8833 GtkFileChooserAction action;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8834 GtkFileFilter *filter1 = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8835 GtkFileFilter *filter2 = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8836 gchar *button;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8837 char *filename = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8838 char buf[1000];
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8839 DWDialog *tmp = dw_dialog_new(NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8840
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8841 switch (flags )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8842 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8843 case DW_DIRECTORY_OPEN:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8844 action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8845 button = _("_Open");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8846 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8847 case DW_FILE_OPEN:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8848 action = GTK_FILE_CHOOSER_ACTION_OPEN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8849 button = _("_Open");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8850 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8851 case DW_FILE_SAVE:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8852 action = GTK_FILE_CHOOSER_ACTION_SAVE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8853 button = _("_Save");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8854 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8855 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8856 dw_messagebox( "Coding error", DW_MB_OK|DW_MB_ERROR, "dw_file_browse() flags argument invalid.");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8857 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8858 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8859 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8860
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8861 filew = gtk_file_chooser_dialog_new ( title,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8862 NULL,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8863 action,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8864 _("_Cancel"), GTK_RESPONSE_CANCEL,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8865 button, GTK_RESPONSE_ACCEPT,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8866 NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8867
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8868 if(ext)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8869 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8870 filter1 = gtk_file_filter_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8871 sprintf( buf, "*.%s", ext );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8872 gtk_file_filter_add_pattern( filter1, (gchar *)buf );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8873 sprintf( buf, "\"%s\" files", ext );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8874 gtk_file_filter_set_name( filter1, (gchar *)buf );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8875 filter2 = gtk_file_filter_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8876 gtk_file_filter_add_pattern( filter2, (gchar *)"*" );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8877 gtk_file_filter_set_name( filter2, (gchar *)"All Files" );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8878 gtk_file_chooser_add_filter( GTK_FILE_CHOOSER( filew ), filter1 );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8879 gtk_file_chooser_add_filter( GTK_FILE_CHOOSER( filew ), filter2 );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8880 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8881
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8882 if(defpath)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8883 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8884 GFile *path = g_file_new_for_path(defpath);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8885
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8886 /* See if the path exists */
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8887 if(path)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8888 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8889 /* If the path is a directory... set the current folder */
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8890 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(filew), path, NULL);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8891 gtk_file_chooser_set_file(GTK_FILE_CHOOSER(filew), path, NULL);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8892
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8893 g_object_unref(G_OBJECT(path));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8894 }
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8895 }
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8896
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
8897 gtk_widget_show(GTK_WIDGET(filew));
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
8898 g_signal_connect(G_OBJECT(filew), "response", G_CALLBACK(_dw_dialog_response), (gpointer)tmp);
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
8899
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8900 if(DW_POINTER_TO_INT(dw_dialog_wait(tmp)) == GTK_RESPONSE_ACCEPT)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8901 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8902 GFile *file = gtk_file_chooser_get_file(GTK_FILE_CHOOSER(filew));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8903 filename = g_file_get_path(file);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8904 g_object_unref(G_OBJECT(file));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8905 }
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8906
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8907 if(GTK_IS_WINDOW(filew))
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8908 gtk_window_destroy(GTK_WINDOW(filew));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8909 return filename;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8910 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8911
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8912
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8913 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8914 * Execute and external program in a seperate session.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8915 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8916 * program: Program name with optional path.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8917 * type: Either DW_EXEC_CON or DW_EXEC_GUI.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8918 * params: An array of pointers to string arguements.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8919 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8920 * -1 on error.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8921 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8922 int dw_exec(const char *program, int type, char **params)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8923 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8924 int ret = -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8925
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8926 if((ret = fork()) == 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8927 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8928 int i;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8929
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8930 for (i = 3; i < 256; i++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8931 close(i);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8932 setsid();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8933 if(type == DW_EXEC_GUI)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8934 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8935 execvp(program, params);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8936 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8937 else if(type == DW_EXEC_CON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8938 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8939 char **tmpargs;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8940
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8941 if(!params)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8942 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8943 tmpargs = malloc(sizeof(char *));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8944 tmpargs[0] = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8945 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8946 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8947 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8948 int z = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8949
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8950 while(params[z])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8951 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8952 z++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8953 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8954 tmpargs = malloc(sizeof(char *)*(z+3));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8955 z=0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8956 tmpargs[0] = "xterm";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8957 tmpargs[1] = "-e";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8958 while(params[z])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8959 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8960 tmpargs[z+2] = params[z];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8961 z++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8962 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8963 tmpargs[z+2] = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8964 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8965 execvp("xterm", tmpargs);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8966 free(tmpargs);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8967 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8968 /* If we got here exec failed */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8969 _exit(-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8970 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8971 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8972 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8973
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8974 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8975 * Loads a web browser pointed at the given URL.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8976 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8977 * url: Uniform resource locator.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8978 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8979 int dw_browse(const char *url)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8980 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8981 /* If possible load the URL/URI using gvfs... */
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8982 gtk_show_uri(NULL, url, GDK_CURRENT_TIME);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8983 return DW_ERROR_NONE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8984 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8985
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8986 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8987 /* Helper function to get the web view handle */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8988 WebKitWebView *_dw_html_web_view(GtkWidget *widget)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8989 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8990 if(widget)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8991 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8992 WebKitWebView *web_view = (WebKitWebView *)widget;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8993 if(WEBKIT_IS_WEB_VIEW(web_view))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8994 return web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8995 #ifndef USE_WEBKIT2
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8996 web_view = (WebKitWebView *)g_object_get_data(G_OBJECT(widget), "_dw_web_view");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8997 if(WEBKIT_IS_WEB_VIEW(web_view))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8998 return web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8999 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9000 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9001 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9002 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9003 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9004 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9005 * Causes the embedded HTML widget to take action.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9006 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9007 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9008 * action: One of the DW_HTML_* constants.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9009 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9010 void dw_html_action(HWND handle, int action)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9011 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9012 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9013 WebKitWebView *web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9014
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9015 if((web_view = _dw_html_web_view(handle)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9016 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9017 switch(action)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9018 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9019 case DW_HTML_GOBACK:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9020 webkit_web_view_go_back(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9021 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9022 case DW_HTML_GOFORWARD:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9023 webkit_web_view_go_forward(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9024 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9025 case DW_HTML_GOHOME:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9026 webkit_web_view_load_uri(web_view, DW_HOME_URL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9027 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9028 case DW_HTML_RELOAD:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9029 webkit_web_view_reload(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9030 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9031 case DW_HTML_STOP:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9032 webkit_web_view_stop_loading(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9033 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9034 case DW_HTML_PRINT:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9035 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9036 WebKitPrintOperation *operation = webkit_print_operation_new(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9037 webkit_print_operation_run_dialog(operation, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9038 g_object_unref(operation);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9039 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9040 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9041 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9042 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9043 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9044 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9045
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9046 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9047 * Render raw HTML code in the embedded HTML widget..
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9048 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9049 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9050 * string: String buffer containt HTML code to
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9051 * be rendered.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9052 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9053 * 0 on success.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9054 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9055 int dw_html_raw(HWND handle, const char *string)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9056 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9057 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9058 WebKitWebView *web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9059
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9060 if((web_view = _dw_html_web_view(handle)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9061 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9062 webkit_web_view_load_html(web_view, string, "file:///");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9063 gtk_widget_show(GTK_WIDGET(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9064 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9065 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9066 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9067 return DW_ERROR_UNKNOWN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9068 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9069 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9070
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9071 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9072 * Render file or web page in the embedded HTML widget..
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9073 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9074 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9075 * url: Universal Resource Locator of the web or
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9076 * file object to be rendered.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9077 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9078 * 0 on success.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9079 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9080 int dw_html_url(HWND handle, const char *url)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9081 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9082 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9083 WebKitWebView *web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9084
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9085 if((web_view = _dw_html_web_view(handle)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9086 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9087 webkit_web_view_load_uri(web_view, url);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9088 gtk_widget_show(GTK_WIDGET(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9089 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9090 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9091 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9092 return DW_ERROR_UNKNOWN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9093 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9094 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9095
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9096 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9097 * Executes the javascript contained in "script" in the HTML window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9098 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9099 * handle: Handle to the HTML window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9100 * script: Javascript code to execute.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9101 * scriptdata: Data passed to the signal handler.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9102 * Notes: A DW_SIGNAL_HTML_RESULT event will be raised with scriptdata.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9103 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9104 * DW_ERROR_NONE (0) on success.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9105 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9106 int dw_html_javascript_run(HWND handle, const char *script, void *scriptdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9107 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9108 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9109 WebKitWebView *web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9110
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9111 if((web_view = _dw_html_web_view(handle)))
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9112 webkit_web_view_run_javascript(web_view, script, NULL, _dw_html_result_event, scriptdata);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9113 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9114 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9115 return DW_ERROR_UNKNOWN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9116 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9117 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9118
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9119 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9120 * Create a new HTML window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9121 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9122 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9123 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9124 HWND dw_html_new(unsigned long id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9125 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9126 GtkWidget *widget = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9127 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9128 WebKitWebView *web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9129 WebKitSettings *settings;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9130
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9131 web_view = (WebKitWebView *)webkit_web_view_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9132 settings = webkit_web_view_get_settings(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9133 /* Make sure java script is enabled */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9134 webkit_settings_set_enable_javascript(settings, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9135 webkit_web_view_set_settings(web_view, settings);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9136 widget = (GtkWidget *)web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9137 gtk_widget_show(widget);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9138 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9139 dw_debug( "HTML widget not available; you do not have access to webkit.\n" );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9140 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9141 return widget;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9142 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9143
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9144 static void _dw_clipboard_callback(GObject *object, GAsyncResult *res, gpointer data)
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9145 {
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9146 DWDialog *tmp = (DWDialog *)data;
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9147
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9148 if(tmp && tmp->data)
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9149 {
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9150 char *text = gdk_clipboard_read_text_finish(GDK_CLIPBOARD(tmp->data), res, NULL);
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9151
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9152 dw_dialog_dismiss(tmp, text ? strdup(text) : text);
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9153 }
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9154 }
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9155
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9156 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9157 * Gets the contents of the default clipboard as text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9158 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9159 * None.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9160 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9161 * Pointer to an allocated string of text or NULL if clipboard empty or contents could not
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9162 * be converted to text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9163 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9164 char *dw_clipboard_get_text()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9165 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9166 GdkDisplay *display = gdk_display_get_default();
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9167 GdkClipboard *clipboard;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9168 char *ret = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9169
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9170 if((clipboard = gdk_display_get_clipboard(display)))
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9171 {
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9172 DWDialog *tmp = dw_dialog_new(DW_POINTER(clipboard));
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9173
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9174 gdk_clipboard_read_text_async(clipboard, NULL, _dw_clipboard_callback, (gpointer)tmp);
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9175
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9176 ret = (char *)dw_dialog_wait(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9177 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9178 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9179 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9180
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9181 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9182 * Sets the contents of the default clipboard to the supplied text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9183 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9184 * Text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9185 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9186 void dw_clipboard_set_text(const char *str, int len)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9187 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9188 GdkDisplay *display = gdk_display_get_default();
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9189 GdkClipboard *clipboard;
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9190
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9191 if((clipboard = gdk_display_get_clipboard(display)))
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
9192 gdk_clipboard_set_text(clipboard, str);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9193 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9194
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9195 /* Internal function to create the drawable pixmap and call the function */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9196 static void _dw_draw_page(GtkPrintOperation *operation, GtkPrintContext *context, int page_nr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9197 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9198 cairo_t *cr = gtk_print_context_get_cairo_context(context);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9199 void *drawdata = g_object_get_data(G_OBJECT(operation), "_dw_drawdata");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9200 int (*drawfunc)(HPRINT, HPIXMAP, int, void *) = g_object_get_data(G_OBJECT(operation), "_dw_drawfunc");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9201 int result = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9202 HPIXMAP pixmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9203
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9204 if(cr && drawfunc && (pixmap = calloc(1,sizeof(struct _hpixmap))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9205 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9206 pixmap->image = cairo_get_group_target(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9207 pixmap->handle = (HWND)operation;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9208 pixmap->width = gtk_print_context_get_width(context);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9209 pixmap->height = gtk_print_context_get_height(context);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9210 result = drawfunc((HPRINT)operation, pixmap, page_nr, drawdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9211 if(result)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9212 gtk_print_operation_draw_page_finish(operation);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9213 free(pixmap);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9214 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9215 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9216
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9217 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9218 * Creates a new print object.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9219 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9220 * jobname: Name of the print job to show in the queue.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9221 * flags: Flags to initially configure the print object.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9222 * pages: Number of pages to print.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9223 * drawfunc: The pointer to the function to be used as the callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9224 * drawdata: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9225 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9226 * A handle to the print object or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9227 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9228 HPRINT API dw_print_new(const char *jobname, unsigned long flags, unsigned int pages, void *drawfunc, void *drawdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9229 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9230 GtkPrintOperation *op;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9231
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9232 if(!drawfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9233 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9234
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9235 if((op = gtk_print_operation_new()))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9236 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9237 gtk_print_operation_set_n_pages(op, pages);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9238 gtk_print_operation_set_job_name(op, jobname ? jobname : "Dynamic Windows Print Job");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9239 g_object_set_data(G_OBJECT(op), "_dw_drawfunc", drawfunc);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9240 g_object_set_data(G_OBJECT(op), "_dw_drawdata", drawdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9241 g_signal_connect(op, "draw_page", G_CALLBACK(_dw_draw_page), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9242 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9243 return (HPRINT)op;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9244 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9245
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9246 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9247 * Runs the print job, causing the draw page callbacks to fire.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9248 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9249 * print: Handle to the print object returned by dw_print_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9250 * flags: Flags to run the print job.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9251 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9252 * DW_ERROR_UNKNOWN on error or DW_ERROR_NONE on success.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9253 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9254 int API dw_print_run(HPRINT print, unsigned long flags)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9255 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9256 GtkPrintOperationResult res;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9257 GtkPrintOperation *op = (GtkPrintOperation *)print;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9258
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9259 res = gtk_print_operation_run(op, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9260 return (res == GTK_PRINT_OPERATION_RESULT_ERROR ? DW_ERROR_UNKNOWN : DW_ERROR_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9261 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9262
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9263 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9264 * Cancels the print job, typically called from a draw page callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9265 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9266 * print: Handle to the print object returned by dw_print_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9267 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9268 void API dw_print_cancel(HPRINT print)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9269 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9270 GtkPrintOperation *op = (GtkPrintOperation *)print;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9271
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9272 gtk_print_operation_cancel(op);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9273 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9274
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9275 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9276 * Returns a pointer to a static buffer which contains the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9277 * current user directory. Or the root directory (C:\ on
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9278 * OS/2 and Windows).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9279 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9280 char *dw_user_dir(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9281 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9282 static char _user_dir[1024] = "";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9283
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9284 if(!_user_dir[0])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9285 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9286 char *home = getenv("HOME");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9287
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9288 if(home)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9289 strcpy(_user_dir, home);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9290 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9291 strcpy(_user_dir, "/");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9292 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9293 return _user_dir;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9294 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9295
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9296 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9297 * Returns a pointer to a static buffer which containes the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9298 * private application data directory.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9299 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9300 char * API dw_app_dir(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9301 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9302 return _dw_share_path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9303 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9304
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9305 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9306 * Sets the application ID used by this Dynamic Windows application instance.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9307 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9308 * appid: A string typically in the form: com.company.division.application
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9309 * appname: The application name used on Windows or NULL.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9310 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9311 * DW_ERROR_NONE after successfully setting the application ID.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9312 * DW_ERROR_UNKNOWN if unsupported on this system.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9313 * DW_ERROR_GENERAL if the application ID is not allowed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9314 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9315 * This must be called before dw_init(). If dw_init() is called first
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9316 * it will create a unique ID in the form: org.dbsoft.dwindows.application
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9317 * or if the application name cannot be detected: org.dbsoft.dwindows.pid.#
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9318 * The appname is only required on Windows. If NULL is passed the detected
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9319 * application name will be used, but a prettier name may be desired.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9320 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9321 int dw_app_id_set(const char *appid, const char *appname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9322 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9323 if(g_application_id_is_valid(appid))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9324 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9325 strncpy(_dw_app_id, appid, _DW_APP_ID_SIZE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9326 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9327 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9328 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9329 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9330
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9331 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9332 * Call a function from the window (widget)'s context.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9333 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9334 * handle: Window handle of the widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9335 * function: Function pointer to be called.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9336 * data: Pointer to the data to be passed to the function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9337 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9338 void dw_window_function(HWND handle, void *function, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9339 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9340 void (* windowfunc)(void *);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9341
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9342 windowfunc = function;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9343
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9344 if(windowfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9345 windowfunc(data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9346 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9347
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9348 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9349 * Add a named user data item to a window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9350 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9351 * window: Window handle of signal to be called back.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9352 * dataname: A string pointer identifying which signal to be hooked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9353 * data: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9354 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9355 void dw_window_set_data(HWND window, const char *dataname, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9356 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9357 HWND thiswindow = window;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9358
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9359 if(!window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9360 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9361
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9362 if(GTK_IS_SCROLLED_WINDOW(window))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9363 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9364 thiswindow = (HWND)g_object_get_data(G_OBJECT(window), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9365 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9366 if(thiswindow && G_IS_OBJECT(thiswindow))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9367 g_object_set_data(G_OBJECT(thiswindow), dataname, (gpointer)data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9368 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9369
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9370 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9371 * Gets a named user data item to a window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9372 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9373 * window: Window handle of signal to be called back.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9374 * dataname: A string pointer identifying which signal to be hooked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9375 * data: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9376 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9377 void *dw_window_get_data(HWND window, const char *dataname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9378 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9379 HWND thiswindow = window;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9380 void *ret = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9381
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9382 if(!window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9383 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9384
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9385 if(GTK_IS_SCROLLED_WINDOW(window))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9386 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9387 thiswindow = (HWND)g_object_get_data(G_OBJECT(window), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9388 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9389 if(G_IS_OBJECT(thiswindow))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9390 ret = (void *)g_object_get_data(G_OBJECT(thiswindow), dataname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9391 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9392 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9393
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9394 /* Internal function to get the state of the timer before firing */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9395 gboolean _dw_timer_func(gpointer data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9396 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9397 void (*sigfunc)(void *data) = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9398 void *sdata;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9399 char tmpbuf[31] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9400 int *tag = data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9401
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9402 if(tag)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9403 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9404 snprintf(tmpbuf, 30, "_dw_timer%d", *tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9405 sigfunc = g_object_get_data(G_OBJECT(_DWObject), tmpbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9406 snprintf(tmpbuf, 30, "_dw_timerdata%d", *tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9407 sdata = g_object_get_data(G_OBJECT(_DWObject), tmpbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9408 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9409 if(!sigfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9410 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9411 if(tag)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9412 free(tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9413 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9414 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9415 sigfunc(sdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9416 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9417 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9418
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9419 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9420 * Add a callback to a timer event.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9421 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9422 * interval: Milliseconds to delay between calls.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9423 * sigfunc: The pointer to the function to be used as the callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9424 * data: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9425 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9426 * Timer ID for use with dw_timer_disconnect(), 0 on error.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9427 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9428 int API dw_timer_connect(int interval, void *sigfunc, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9429 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9430 int *tag;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9431 char tmpbuf[31] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9432
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9433 tag = calloc(1, sizeof(int));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9434
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9435 *tag = g_timeout_add(interval, (GSourceFunc)_dw_timer_func, (gpointer)tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9436 snprintf(tmpbuf, 30, "_dw_timer%d", *tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9437 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, sigfunc);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9438 snprintf(tmpbuf, 30, "_dw_timerdata%d", *tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9439 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9440 return *tag;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9441 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9442
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9443 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9444 * Removes timer callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9445 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9446 * id: Timer ID returned by dw_timer_connect().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9447 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9448 void API dw_timer_disconnect(int id)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9449 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9450 char tmpbuf[31] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9451
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9452 snprintf(tmpbuf, 30, "_dw_timer%d", id);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9453 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9454 snprintf(tmpbuf, 30, "_dw_timerdata%d", id);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9455 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9456 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9457
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9458 /* Get the actual signal window handle not the user window handle
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9459 * Should mimic the code in dw_signal_connect() below.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9460 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9461 static HWND _find_signal_window(HWND window, const char *signame)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9462 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9463 HWND thiswindow = window;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9464
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9465 if(GTK_IS_SCROLLED_WINDOW(thiswindow))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9466 thiswindow = (HWND)g_object_get_data(G_OBJECT(window), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9467 else if(GTK_IS_SCALE(thiswindow) || GTK_IS_SCROLLBAR(thiswindow) || GTK_IS_SPIN_BUTTON(thiswindow))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9468 thiswindow = (GtkWidget *)g_object_get_data(G_OBJECT(thiswindow), "_dw_adjustment");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9469 else if(GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_SELECT) == 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9470 thiswindow = (GtkWidget *)gtk_tree_view_get_selection(GTK_TREE_VIEW(thiswindow));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9471 return thiswindow;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9472 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9473
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9474 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9475 * Add a callback to a window event.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9476 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9477 * window: Window handle of signal to be called back.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9478 * signame: A string pointer identifying which signal to be hooked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9479 * sigfunc: The pointer to the function to be used as the callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9480 * data: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9481 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9482 void dw_signal_connect(HWND window, const char *signame, void *sigfunc, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9483 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9484 dw_signal_connect_data(window, signame, sigfunc, NULL, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9485 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9486
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9487 /* Internal function to free any allocated signal data..
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9488 * and call any required function to free additional memory.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9489 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9490 static void _dw_signal_disconnect(gpointer data, GClosure *closure)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9491 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9492 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9493 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9494 void **params = (void **)data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9495 void (*discfunc)(HWND, void *) = params[1];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9496
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9497 if(discfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9498 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9499 SignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9500
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9501 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9502 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9503 discfunc(work.window, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9504 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9505 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9506 free(data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9507 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9508 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9509
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9510 #define _DW_INTERNAL_CALLBACK_PARAMS 4
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9511
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9512 /* Signal setup functions */
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9513 GObject *_dw_key_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9514 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9515 if(GTK_IS_WIDGET(object))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9516 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9517 GtkEventController *controller = gtk_event_controller_key_new();
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9518 gtk_widget_add_controller(GTK_WIDGET(object), controller);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9519 return G_OBJECT(controller);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9520 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9521 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9522 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9523
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9524 GObject *_dw_button_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9525 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9526 /* Special case for handling notification signals, which aren't really signals */
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9527 if(G_IS_NOTIFICATION(object) && strcmp(signal->name, DW_SIGNAL_CLICKED) == 0)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9528 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9529 char textbuf[101] = {0};
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9530 snprintf(textbuf, 100, "dw-notification-%llu-func", DW_POINTER_TO_ULONGLONG(object));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9531 g_object_set_data(G_OBJECT(_DWApp), textbuf, DW_POINTER(sigfunc));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9532 snprintf(textbuf, 100, "dw-notification-%llu-data", DW_POINTER_TO_ULONGLONG(object));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9533 g_object_set_data(G_OBJECT(_DWApp), textbuf, DW_POINTER(data));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9534 return NULL;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9535 }
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9536 /* GTK signal name for check buttons is "toggled" not "clicked" */
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9537 else if(GTK_IS_CHECK_BUTTON(object) && strcmp(signal->name, DW_SIGNAL_CLICKED) == 0)
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9538 strcpy(signal->gname, "toggled");
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9539 /* For menu items, get the G(Simple)Action and the signal is "activate" */
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9540 else if(G_IS_MENU_ITEM(object) && strcmp(signal->name, DW_SIGNAL_CLICKED) == 0)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9541 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9542 GSimpleAction *action = G_SIMPLE_ACTION(g_object_get_data(object, "_dw_action"));
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9543
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9544 if(action)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9545 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9546 int cid, sigid = _dw_set_signal_handler(G_OBJECT(action), (HWND)object, sigfunc, data, (gpointer)_dw_menu_handler, discfunc);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9547
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9548 params[0] = DW_INT_TO_POINTER(sigid);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9549 params[2] = DW_POINTER(object);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9550 cid = g_signal_connect_data(G_OBJECT(action), "activate", G_CALLBACK(_dw_menu_handler), params, _dw_signal_disconnect, 0);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9551 _dw_set_signal_handler_id(object, sigid, cid);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9552 }
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9553 return NULL;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
9554 }
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9555 return object;
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9556 }
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9557
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9558 GObject *_dw_mouse_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data)
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9559 {
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9560 if(GTK_IS_WIDGET(object))
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9561 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9562 GtkGesture *gesture = gtk_gesture_click_new();
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9563 gtk_widget_add_controller(GTK_WIDGET(object), GTK_EVENT_CONTROLLER(gesture));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9564 return G_OBJECT(gesture);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9565 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9566 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9567 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9568
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9569 GObject *_dw_motion_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9570 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9571 if(GTK_IS_WIDGET(object))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9572 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9573 GtkEventController *controller = gtk_event_controller_motion_new();
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9574 gtk_widget_add_controller(GTK_WIDGET(object), controller);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9575 return G_OBJECT(controller);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9576 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9577 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9578 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9579
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9580 GObject *_dw_draw_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9581 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9582 if(GTK_IS_DRAWING_AREA(object))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9583 {
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
9584 g_object_set_data(object, "_dw_expose_func", sigfunc);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9585 gtk_drawing_area_set_draw_func(GTK_DRAWING_AREA(object), signal->func, data, NULL);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9586 return NULL;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9587 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9588 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9589 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9590
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9591 GObject *_dw_tree_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9592 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9593 if(GTK_IS_TREE_VIEW(object))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9594 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9595 if(strcmp(signal->name, DW_SIGNAL_COLUMN_CLICK) == 0)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9596 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9597 /* We don't actually need a signal handler here... just need to assign the handler ID
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9598 * Since the handlers for the columns were already created in _dw_container_setup()
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9599 */
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9600 int sigid = _dw_set_signal_handler(object, (HWND)object, sigfunc, data, signal->func, discfunc);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9601 g_object_set_data(object, "_dw_column_click_id", GINT_TO_POINTER(sigid+1));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9602 return NULL;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9603 }
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
9604 else if(strcmp(signal->name, DW_SIGNAL_ITEM_SELECT) == 0)
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
9605 {
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
9606 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(object));
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
9607 return G_OBJECT(sel);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
9608 }
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9609 else
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9610 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9611 GtkGesture *gesture = gtk_gesture_click_new();
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9612 gtk_widget_add_controller(GTK_WIDGET(object), GTK_EVENT_CONTROLLER(gesture));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9613 return G_OBJECT(gesture);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9614 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9615 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9616 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9617 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9618
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9619 GObject *_dw_value_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9620 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9621 if(GTK_IS_SCALE(object) || GTK_IS_SCROLLBAR(object) || GTK_IS_SPIN_BUTTON(object))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9622 return G_OBJECT(g_object_get_data(object, "_dw_adjustment"));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9623 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9624 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9625
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9626 GObject *_dw_focus_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9627 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9628 if(GTK_IS_COMBO_BOX(object) && strcmp(signal->name, DW_SIGNAL_SET_FOCUS) == 0)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9629 return G_OBJECT(gtk_combo_box_get_child(GTK_COMBO_BOX(object)));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9630 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9631 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9632
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9633 #ifdef USE_WEBKIT
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9634 GObject *_dw_html_setup(struct _dw_signal_list *signal, GObject *object, void *params[], void *sigfunc, void *discfunc, void *data)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9635 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9636 if(WEBKIT_IS_WEB_VIEW(object) && strcmp(signal->name, DW_SIGNAL_HTML_RESULT) == 0)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9637 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9638 /* We don't actually need a signal handler here... just need to assign the handler ID
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9639 * Since the handler is created in dw_html_javasript_run()
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9640 */
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9641 int sigid = _dw_set_signal_handler(object, (HWND)object, sigfunc, data, signal->func, discfunc);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9642 g_object_set_data(object, "_dw_html_result_id", GINT_TO_POINTER(sigid+1));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9643 return NULL;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9644 }
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9645 return object;
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9646 }
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9647 #endif
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9648
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9649 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9650 * Add a callback to a window event with a closure callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9651 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9652 * window: Window handle of signal to be called back.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9653 * signame: A string pointer identifying which signal to be hooked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9654 * sigfunc: The pointer to the function to be used as the callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9655 * discfunc: The pointer to the function called when this handler is removed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9656 * data: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9657 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9658 void dw_signal_connect_data(HWND window, const char *signame, void *sigfunc, void *discfunc, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9659 {
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9660 SignalList signal = _dw_findsignal(signame);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9661
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9662 if(signal.func)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9663 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9664 GObject *object = (GObject *)window;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9665 void **params = calloc(_DW_INTERNAL_CALLBACK_PARAMS, sizeof(void *));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9666 int sigid;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9667 gint cid;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9668
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9669 /* Save the disconnect function pointer */
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9670 params[1] = discfunc;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9671
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9672 /*
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9673 * If the window we are setting the signal on is a scrolled window we need to get
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9674 * the "real" widget type. thiswindow is the "real" widget type
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9675 */
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9676 if (GTK_IS_SCROLLED_WINDOW(window)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9677 #ifdef USE_WEBKIT
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9678 && !(object = G_OBJECT(_dw_html_web_view(window)))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9679 #endif
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9680 )
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9681 object = (GObject *)g_object_get_data(G_OBJECT(window), "_dw_user");
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9682
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9683 /* Do object class specific setup */
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9684 if(signal.setup)
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9685 object = signal.setup(&signal, object, params, sigfunc, discfunc, data);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9686
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9687 if(!object)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9688 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9689 free(params);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9690 return;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9691 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9692
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9693 sigid = _dw_set_signal_handler(object, window, sigfunc, data, signal.func, discfunc);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9694 params[0] = DW_INT_TO_POINTER(sigid);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9695 params[2] = DW_POINTER(object);
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9696 cid = g_signal_connect_data(object, signal.gname, G_CALLBACK(signal.func), params, _dw_signal_disconnect, 0);
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9697 _dw_set_signal_handler_id(object, sigid, cid);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9698 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9699 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9700
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9701 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9702 * Removes callbacks for a given window with given name.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9703 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9704 * window: Window handle of callback to be removed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9705 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9706 void dw_signal_disconnect_by_name(HWND window, const char *signame)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9707 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9708 int z, count;
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9709 SignalList signal;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9710 void **params = alloca(sizeof(void *) * 3);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9711
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9712 params[2] = _find_signal_window(window, signame);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9713 count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(params[2]), "_dw_sigcounter"));
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9714 signal = _dw_findsignal(signame);
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9715
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9716 if(signal.func)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9717 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9718 for(z=0;z<count;z++)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9719 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9720 SignalHandler sh;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9721
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9722 params[0] = GINT_TO_POINTER(z);
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9723 sh = _dw_get_signal_handler(params);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9724
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
9725 if(sh.intfunc == signal.func)
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9726 _dw_remove_signal_handler((HWND)params[2], z);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
9727 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9728 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9729 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9730
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9731 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9732 * Removes all callbacks for a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9733 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9734 * window: Window handle of callback to be removed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9735 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9736 void dw_signal_disconnect_by_window(HWND window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9737 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9738 HWND thiswindow;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9739 int z, count;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9740
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9741 thiswindow = _find_signal_window(window, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9742 count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(thiswindow), "_dw_sigcounter"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9743
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9744 for(z=0;z<count;z++)
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9745 _dw_remove_signal_handler(thiswindow, z);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9746 g_object_set_data(G_OBJECT(thiswindow), "_dw_sigcounter", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9747 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9748
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9749 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9750 * Removes all callbacks for a given window with specified data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9751 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9752 * window: Window handle of callback to be removed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9753 * data: Pointer to the data to be compared against.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9754 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9755 void dw_signal_disconnect_by_data(HWND window, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9756 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9757 int z, count;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9758 void **params = alloca(sizeof(void *) * 3);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9759
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9760 params[2] = _find_signal_window(window, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9761 count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(params[2]), "_dw_sigcounter"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9762
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9763 for(z=0;z<count;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9764 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9765 SignalHandler sh;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9766
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9767 params[0] = GINT_TO_POINTER(z);
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9768 sh = _dw_get_signal_handler(params);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9769
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9770 if(sh.data == data)
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
9771 _dw_remove_signal_handler((HWND)params[2], z);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9772 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9773 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9774
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9775 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9776 * Converts a UTF-8 encoded string into a wide string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9777 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9778 * utf8string: UTF-8 encoded source string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9779 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9780 * Wide string that needs to be freed with dw_free()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9781 * or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9782 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9783 wchar_t * API dw_utf8_to_wchar(const char *utf8string)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9784 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9785 wchar_t *retval = NULL, *freeme;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9786
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9787 if(sizeof(wchar_t) == sizeof(gunichar))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9788 freeme = retval = (wchar_t *)g_utf8_to_ucs4(utf8string, -1, NULL, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9789 else if(sizeof(wchar_t) == sizeof(gunichar2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9790 freeme = retval = (wchar_t *)g_utf8_to_utf16(utf8string, -1, NULL, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9791 if(retval)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9792 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9793 retval = wcsdup(retval);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9794 g_free(freeme);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9795 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9796 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9797 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9798
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9799 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9800 * Converts a wide string into a UTF-8 encoded string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9801 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9802 * wstring: Wide source string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9803 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9804 * UTF-8 encoded string that needs to be freed with dw_free()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9805 * or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9806 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9807 char * API dw_wchar_to_utf8(const wchar_t *wstring)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9808 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9809 char *retval = NULL, *freeme;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9810
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9811 if(sizeof(wchar_t) == sizeof(gunichar))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9812 freeme = retval = g_ucs4_to_utf8((gunichar *)wstring, -1, NULL, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9813 else if(sizeof(wchar_t) == sizeof(gunichar2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9814 freeme = retval = g_utf16_to_utf8((gunichar2 *)wstring, -1, NULL, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9815 if(retval)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9816 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9817 retval = strdup(retval);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9818 g_free(freeme);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9819 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9820 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9821 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9822
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9823 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9824 * Gets the state of the requested library feature.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9825 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9826 * feature: The requested feature for example DW_FEATURE_DARK_MODE
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9827 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9828 * DW_FEATURE_UNSUPPORTED if the library or OS does not support the feature.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9829 * DW_FEATURE_DISABLED if the feature is supported but disabled.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9830 * DW_FEATURE_ENABLED if the feature is supported and enabled.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9831 * Other value greater than 1, same as enabled but with extra info.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9832 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9833 int API dw_feature_get(DWFEATURE feature)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9834 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9835 switch(feature)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9836 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9837 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9838 case DW_FEATURE_HTML:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9839 case DW_FEATURE_HTML_RESULT:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9840 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9841 case DW_FEATURE_NOTIFICATION:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9842 case DW_FEATURE_CONTAINER_STRIPE:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9843 case DW_FEATURE_UTF8_UNICODE:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9844 case DW_FEATURE_MLE_WORD_WRAP:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9845 return DW_FEATURE_ENABLED;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9846 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9847 return DW_FEATURE_UNSUPPORTED;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9848 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9849 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9850
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9851 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9852 * Sets the state of the requested library feature.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9853 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9854 * feature: The requested feature for example DW_FEATURE_DARK_MODE
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9855 * state: DW_FEATURE_DISABLED, DW_FEATURE_ENABLED or any value greater than 1.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9856 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9857 * DW_FEATURE_UNSUPPORTED if the library or OS does not support the feature.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9858 * DW_ERROR_NONE if the feature is supported and successfully configured.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9859 * DW_ERROR_GENERAL if the feature is supported but could not be configured.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9860 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9861 * These settings are typically used during dw_init() so issue before
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9862 * setting up the library with dw_init().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9863 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9864 int API dw_feature_set(DWFEATURE feature, int state)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9865 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9866 switch(feature)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9867 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9868 /* These features are supported but not configurable */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9869 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9870 case DW_FEATURE_HTML:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9871 case DW_FEATURE_HTML_RESULT:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9872 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9873 case DW_FEATURE_NOTIFICATION:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9874 case DW_FEATURE_CONTAINER_STRIPE:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9875 case DW_FEATURE_UTF8_UNICODE:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9876 case DW_FEATURE_MLE_WORD_WRAP:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9877 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9878 /* These features are supported and configurable */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9879 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9880 return DW_FEATURE_UNSUPPORTED;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9881 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9882 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9883