annotate gtk3/dw.c @ 1289:5fb54aeba5e0

Allow removing icons from containers on GTK2. Also a small performance helper in both GTK versions.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 31 Oct 2011 11:04:03 +0000
parents 57ce07fbec45
children b99b0b2c2826
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2 * Dynamic Windows:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3 * A GTK like implementation of the PM GUI
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4 * GTK3 forwarder module for portabilty.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5 *
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6 * (C) 2000-2011 Brian Smith <brian@dbsoft.org>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7 * (C) 2003-2004 Mark Hessling <m.hessling@qut.edu.au>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8 * (C) 2002 Nickolay V. Shmyrev <shmyrev@yandex.ru>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10 #include "config.h"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11 #include "dw.h"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12 #include <string.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
13 #include <stdlib.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
14 #if !defined(GDK_WINDOWING_WIN32)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
15 # include <sys/utsname.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
16 # include <sys/socket.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
17 # include <sys/un.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
18 # include <sys/mman.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
19 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
20 #include <stdarg.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
21 #include <stdio.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
22 #include <unistd.h>
1001
4ef0e878fe06 Added support for Dynamic Windows style font names for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 998
diff changeset
23 #include <ctype.h>
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
24 #include <errno.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
25 #include <sys/time.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
26 #include <dirent.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
27 #include <sys/stat.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
28 #include <signal.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
29 #include <fcntl.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
30 #include <unistd.h>
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
31 #include <math.h>
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
32 #include <gdk/gdkkeysyms.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
33
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
34 #ifdef USE_GTKMOZEMBED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
35 # include <gtkmozembed.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
36 # undef GTK_TYPE_MOZ_EMBED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
37 # define GTK_TYPE_MOZ_EMBED (_dw_moz_embed_get_type())
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
38 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
39
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
40 #ifdef USE_LIBGTKHTML2
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
41 # include <libgtkhtml/gtkhtml.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
42 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
43
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
44 #ifdef USE_WEBKIT
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
45 # if defined(USE_WEBKIT10) || defined(USE_WEBKIT11)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
46 # include <webkit/webkit.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
47 # else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
48 # include <webkit.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
49 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
50 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
51
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
52 #include <gdk-pixbuf/gdk-pixbuf.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
53
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
54 #if __STDC_VERSION__ < 199901L
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
55 # if __GNUC__ >= 2
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
56 # define __func__ __FUNCTION__
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
57 # else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
58 # define __func__ "<unknown>"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
59 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
60 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
61
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
62 #include "gtk/messagebox_error.xpm"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
63 #include "gtk/messagebox_warning.xpm"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
64 #include "gtk/messagebox_information.xpm"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
65 #include "gtk/messagebox_question.xpm"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
66
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
67 #ifdef USE_GTKMOZEMBED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
68 extern gint mozilla_get_mouse_event_button(gpointer event);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
69 extern gint mozilla_get_mouse_location( gpointer event, glong *x, glong *y);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
70 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
71
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
72 /* These are used for resource management */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
73 #if defined(DW_RESOURCES) && !defined(BUILD_DLL)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
74 extern DWResources _resources;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
75 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
76
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
77 GdkColor _colors[] =
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
78 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
79 { 0, 0x0000, 0x0000, 0x0000 }, /* 0 black */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
80 { 0, 0xbbbb, 0x0000, 0x0000 }, /* 1 red */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
81 { 0, 0x0000, 0xbbbb, 0x0000 }, /* 2 green */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
82 { 0, 0xaaaa, 0xaaaa, 0x0000 }, /* 3 yellow */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
83 { 0, 0x0000, 0x0000, 0xcccc }, /* 4 blue */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
84 { 0, 0xbbbb, 0x0000, 0xbbbb }, /* 5 magenta */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
85 { 0, 0x0000, 0xbbbb, 0xbbbb }, /* 6 cyan */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
86 { 0, 0xbbbb, 0xbbbb, 0xbbbb }, /* 7 white */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
87 { 0, 0x7777, 0x7777, 0x7777 }, /* 8 grey */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
88 { 0, 0xffff, 0x0000, 0x0000 }, /* 9 bright red */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
89 { 0, 0x0000, 0xffff, 0x0000 }, /* 10 bright green */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
90 { 0, 0xeeee, 0xeeee, 0x0000 }, /* 11 bright yellow */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
91 { 0, 0x0000, 0x0000, 0xffff }, /* 12 bright blue */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
92 { 0, 0xffff, 0x0000, 0xffff }, /* 13 bright magenta */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
93 { 0, 0x0000, 0xeeee, 0xeeee }, /* 14 bright cyan */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
94 { 0, 0xffff, 0xffff, 0xffff }, /* 15 bright white */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
95 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
96
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
97 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
98 * List those icons that have transparency first
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
99 */
1258
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
100 #define NUM_EXTS 9
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
101 char *image_exts[NUM_EXTS] =
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
102 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
103 ".xpm",
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
104 ".png",
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
105 ".ico",
1258
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
106 ".icns",
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
107 ".gif",
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
108 ".jpg",
1258
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
109 ".jpeg",
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
110 ".tiff",
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
111 ".bmp"
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
112 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
113
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
114 #ifndef max
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
115 # define max(a,b) (((a) > (b)) ? (a) : (b))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
116 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
117
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
118 #ifndef min
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
119 # define min(a,b) (((a) < (b)) ? (a) : (b))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
120 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
121
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
122 FILE *dbgfp = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
123
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
124 pthread_key_t _dw_fg_color_key;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
125 pthread_key_t _dw_bg_color_key;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
126 pthread_key_t _dw_mutex_key;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
127
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
128 GtkWidget *last_window = NULL, *popup = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
129
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
130 static int _dw_ignore_click = 0, _dw_ignore_expand = 0, _dw_color_active = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
131 static pthread_t _dw_thread = (pthread_t)-1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
132 /* Use default border size for the default enlightenment theme */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
133 static int _dw_border_width = 12, _dw_border_height = 28;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
134
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
135 #define DW_MUTEX_LOCK { if(pthread_self() != _dw_thread && !pthread_getspecific(_dw_mutex_key)) { gdk_threads_enter(); pthread_setspecific(_dw_mutex_key, (void *)1); _locked_by_me = TRUE; } }
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
136 #define DW_MUTEX_UNLOCK { if(pthread_self() != _dw_thread && _locked_by_me == TRUE) { gdk_threads_leave(); pthread_setspecific(_dw_mutex_key, NULL); _locked_by_me = FALSE; } }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
137
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
138 #define DEFAULT_SIZE_WIDTH 12
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
139 #define DEFAULT_SIZE_HEIGHT 6
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
140 #define DEFAULT_TITLEBAR_HEIGHT 22
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
141
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
142 #define _DW_TREE_TYPE_CONTAINER 1
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
143 #define _DW_TREE_TYPE_TREE 2
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
144 #define _DW_TREE_TYPE_LISTBOX 3
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
145 #define _DW_TREE_TYPE_COMBOBOX 4
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
146
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
147 /* Signal forwarder prototypes */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
148 static gint _button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
149 static gint _button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
150 static gint _motion_notify_event(GtkWidget *widget, GdkEventMotion *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
151 static gint _delete_event(GtkWidget *widget, GdkEvent *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
152 static gint _key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
153 static gint _generic_event(GtkWidget *widget, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
154 static gint _configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
155 static gint _activate_event(GtkWidget *widget, gpointer data);
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
156 static gint _container_enter_event(GtkWidget *widget, GdkEventAny *event, gpointer data);
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
157 static gint _combobox_select_event(GtkWidget *widget, gpointer data);
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
158 static gint _expose_event(GtkWidget *widget, cairo_t *cr, gpointer data);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
159 static gint _set_focus_event(GtkWindow *window, GtkWidget *widget, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
160 static gint _tree_context_event(GtkWidget *widget, GdkEventButton *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
161 static gint _value_changed_event(GtkAdjustment *adjustment, gpointer user_data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
162 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
163 static gint _tree_expand_event(GtkTreeView *treeview, GtkTreeIter *arg1, GtkTreePath *arg2, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
164 static gint _switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data);
786
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
165 static gint _column_click_event(GtkWidget *widget, gpointer data);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
166
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
167 /* Embedable Mozilla functions*/
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
168 #ifdef USE_GTKMOZEMBED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
169 void (*_gtk_moz_embed_go_back)(GtkMozEmbed *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
170 void (*_gtk_moz_embed_go_forward)(GtkMozEmbed *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
171 void (*_gtk_moz_embed_load_url)(GtkMozEmbed *, const char *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
172 void (*_gtk_moz_embed_reload)(GtkMozEmbed *, guint32) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
173 void (*_gtk_moz_embed_stop_load)(GtkMozEmbed *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
174 void (*_gtk_moz_embed_render_data)(GtkMozEmbed *, const char *, guint32, const char *, const char *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
175 GtkWidget *(*_gtk_moz_embed_new)(void) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
176 GtkType (*_dw_moz_embed_get_type)(void) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
177 gboolean (*_gtk_moz_embed_can_go_back)(GtkMozEmbed *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
178 gboolean (*_gtk_moz_embed_can_go_forward)(GtkMozEmbed *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
179 void (*_gtk_moz_embed_set_comp_path)(const char *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
180 void (*_gtk_moz_embed_set_profile_path)(const char *, const char *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
181 void (*_gtk_moz_embed_push_startup)(void) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
182 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
183
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
184 #ifdef USE_LIBGTKHTML2
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
185 GtkHtmlContext *(*_gtk_html_context_get)(void) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
186 HtmlDocument *(*_html_document_new)(void) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
187 GtkWidget *(*_html_view_new)(void) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
188 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
189
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
190 #ifdef USE_WEBKIT
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
191 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
192 * we need to add these equivalents from webkitwebview.h so we can refer to
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
193 * our own pointers to functions (we don't link with the webkit libraries
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
194 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
195 # define DW_WEBKIT_TYPE_WEB_VIEW (_webkit_web_view_get_type())
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
196 # define DW_WEBKIT_WEB_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), DW_WEBKIT_TYPE_WEB_VIEW, WebKitWebView))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
197 WEBKIT_API GType (*_webkit_web_view_get_type)(void) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
198 WEBKIT_API void (*_webkit_web_view_load_html_string)(WebKitWebView *, const gchar *, const gchar *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
199 WEBKIT_API void (*_webkit_web_view_open)(WebKitWebView *, const gchar *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
200 WEBKIT_API GtkWidget *(*_webkit_web_view_new)(void) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
201 WEBKIT_API void (*_webkit_web_view_go_back)(WebKitWebView *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
202 WEBKIT_API void (*_webkit_web_view_go_forward)(WebKitWebView *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
203 WEBKIT_API void (*_webkit_web_view_reload)(WebKitWebView *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
204 WEBKIT_API void (*_webkit_web_view_stop_loading)(WebKitWebView *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
205 # ifdef WEBKIT_CHECK_VERSION
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
206 # if WEBKIT_CHECK_VERSION(1,1,5)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
207 WEBKIT_API void (*_webkit_web_frame_print)(WebKitWebFrame *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
208 WEBKIT_API WebKitWebFrame *(*_webkit_web_view_get_focused_frame)(WebKitWebView *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
209 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
210 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
211 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
212
874
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
213 GObject *_DWObject = NULL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
214
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
215 typedef struct
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
216 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
217 void *func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
218 char name[30];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
219
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
220 } SignalList;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
221
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
222 typedef struct
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
223 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
224 HWND window;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
225 void *func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
226 gpointer data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
227 gint cid;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
228 void *intfunc;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
229
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
230 } SignalHandler;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
231
836
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
232 #define SIGNALMAX 18
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
233
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
234 /* A list of signal forwarders, to account for paramater differences. */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
235 static SignalList SignalTranslate[SIGNALMAX] = {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
236 { _configure_event, DW_SIGNAL_CONFIGURE },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
237 { _key_press_event, DW_SIGNAL_KEY_PRESS },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
238 { _button_press_event, DW_SIGNAL_BUTTON_PRESS },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
239 { _button_release_event, DW_SIGNAL_BUTTON_RELEASE },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
240 { _motion_notify_event, DW_SIGNAL_MOTION_NOTIFY },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
241 { _delete_event, DW_SIGNAL_DELETE },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
242 { _expose_event, DW_SIGNAL_EXPOSE },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
243 { _activate_event, "activate" },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
244 { _generic_event, DW_SIGNAL_CLICKED },
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
245 { _container_enter_event, DW_SIGNAL_ITEM_ENTER },
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
246 { _tree_context_event, DW_SIGNAL_ITEM_CONTEXT },
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
247 { _combobox_select_event, DW_SIGNAL_LIST_SELECT },
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
248 { _tree_select_event, DW_SIGNAL_ITEM_SELECT },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
249 { _set_focus_event, DW_SIGNAL_SET_FOCUS },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
250 { _value_changed_event, DW_SIGNAL_VALUE_CHANGED },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
251 { _switch_page_event, DW_SIGNAL_SWITCH_PAGE },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
252 { _column_click_event, DW_SIGNAL_COLUMN_CLICK },
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
253 { _tree_expand_event, DW_SIGNAL_TREE_EXPAND }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
254 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
255
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
256 /* Alignment flags */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
257 #define DW_CENTER 0.5f
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
258 #define DW_LEFT 0.0f
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
259 #define DW_RIGHT 1.0f
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
260 #define DW_TOP 0.0f
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
261 #define DW_BOTTOM 1.0f
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
262
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
263 /* MDI Support Code */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
264 #define GTK_MDI(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, gtk_mdi_get_type (), GtkMdi)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
265 #define GTK_MDI_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, gtk_mdi_get_type (), GtkMdiClass)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
266 #define GTK_IS_MDI(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_mdi_get_type ())
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
267
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
268 typedef struct _GtkMdi GtkMdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
269 typedef struct _GtkMdiClass GtkMdiClass;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
270 typedef struct _GtkMdiDragInfo GtkMdiDragInfo;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
271 typedef enum _GtkMdiChildState GtkMdiChildState;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
272
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
273 enum _GtkMdiChildState
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
274 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
275 CHILD_NORMAL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
276 CHILD_MAXIMIZED,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
277 CHILD_ICONIFIED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
278 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
279
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
280 struct _GtkMdi
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
281 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
282 GtkContainer container;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
283 GList *children;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
284
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
285 GdkPoint drag_start;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
286 gint drag_button;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
287 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
288
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
289 struct _GtkMdiClass
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
290 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
291 GtkContainerClass parent_class;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
292
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
293 void (*mdi) (GtkMdi * mdi);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
294 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
295
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
296 #include "gtk/maximize.xpm"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
297 #include "gtk/minimize.xpm"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
298 #include "gtk/kill.xpm"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
299
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
300 #define GTK_MDI_BACKGROUND "Grey70"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
301 #define GTK_MDI_LABEL_BACKGROUND "RoyalBlue4"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
302 #define GTK_MDI_LABEL_FOREGROUND "white"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
303 #define GTK_MDI_DEFAULT_WIDTH 0
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
304 #define GTK_MDI_DEFAULT_HEIGHT 0
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
305 #define GTK_MDI_MIN_HEIGHT 22
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
306 #define GTK_MDI_MIN_WIDTH 55
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
307
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
308 typedef struct _GtkMdiChild GtkMdiChild;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
309
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
310 struct _GtkMdiChild
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
311 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
312 GtkWidget *widget;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
313
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
314 GtkWidget *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
315 GtkMdi *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
316
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
317 gint x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
318 gint y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
319 gint width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
320 gint height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
321
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
322 GtkMdiChildState state;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
323 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
324
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
325 static void gtk_mdi_class_init(GtkMdiClass *klass);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
326 static void gtk_mdi_init(GtkMdi *mdi);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
327
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
328 static void gtk_mdi_realize(GtkWidget *widget);
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
329 static void gtk_mdi_size_allocate(GtkWidget *widget, GtkAllocation *allocation);
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
330 static gboolean gtk_mdi_draw(GtkWidget *widget, cairo_t *cr);
836
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
331 static void gtk_mdi_get_preferred_width (GtkWidget *widget, gint *minimum_width, gint *natural_width);
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
332 static void gtk_mdi_get_preferred_height (GtkWidget *widget, gint *minimum_height, gint *natural_height);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
333
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
334 /* Callbacks */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
335 static gboolean move_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
336 static gboolean resize_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
337 static gboolean iconify_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
338 static gboolean maximize_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
339 static gboolean kill_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
340
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
341 static void gtk_mdi_add(GtkContainer *container, GtkWidget *widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
342 static void gtk_mdi_remove_true(GtkContainer *container, GtkWidget *widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
343 static void gtk_mdi_forall(GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
344
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
345 static GtkMdiChild *get_child(GtkMdi *mdi, GtkWidget * widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
346
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
347 static void _dw_log( char *format, ... )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
348 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
349 va_list args;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
350 va_start(args, format);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
351 if ( dbgfp != NULL )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
352 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
353 vfprintf( dbgfp, format, args );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
354 fflush( dbgfp );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
355 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
356 va_end(args);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
357 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
358
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
359 static GType gtk_mdi_get_type(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
360 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
361 static GType mdi_type = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
362
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
363 if (!mdi_type)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
364 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
365
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
366 static const GTypeInfo mdi_info =
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
367 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
368 sizeof (GtkMdiClass),
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
369 NULL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
370 NULL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
371 (GClassInitFunc) gtk_mdi_class_init,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
372 NULL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
373 NULL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
374 sizeof (GtkMdi),
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
375 0,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
376 (GInstanceInitFunc) gtk_mdi_init,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
377 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
378
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
379 mdi_type = g_type_register_static (GTK_TYPE_CONTAINER, "GtkMdi", &mdi_info, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
380 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
381 return mdi_type;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
382 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
383
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
384 /* Local data */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
385 static GtkWidgetClass *parent_class = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
386
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
387 static void gtk_mdi_class_init(GtkMdiClass *class)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
388 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
389 GtkWidgetClass *widget_class;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
390 GtkContainerClass *container_class;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
391
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
392 widget_class = (GtkWidgetClass *) class;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
393 container_class = (GtkContainerClass *) class;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
394
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
395 parent_class = g_type_class_ref (GTK_TYPE_CONTAINER);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
396
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
397 widget_class->realize = gtk_mdi_realize;
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
398 widget_class->draw = gtk_mdi_draw;
836
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
399 widget_class->get_preferred_height = gtk_mdi_get_preferred_height;
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
400 widget_class->get_preferred_width = gtk_mdi_get_preferred_width;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
401 widget_class->size_allocate = gtk_mdi_size_allocate;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
402
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
403 container_class->add = gtk_mdi_add;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
404 container_class->remove = gtk_mdi_remove_true;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
405 container_class->forall = gtk_mdi_forall;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
406 class->mdi = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
407 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
408
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
409 static void gtk_mdi_init(GtkMdi *mdi)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
410 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
411 mdi->drag_button = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
412 mdi->children = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
413 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
414
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
415 static GtkWidget *gtk_mdi_new(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
416 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
417 GtkWidget *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
418 GdkColor background;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
419
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
420 mdi = GTK_WIDGET (g_object_new (gtk_mdi_get_type (), NULL));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
421 gdk_color_parse (GTK_MDI_BACKGROUND, &background);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
422 gtk_widget_modify_bg (mdi, GTK_STATE_NORMAL, &background);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
423
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
424 return mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
425 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
426
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
427 static void gtk_mdi_put(GtkMdi *mdi, GtkWidget *child_widget, gint x, gint y, GtkWidget *label)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
428 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
429 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
430
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
431 GtkWidget *table;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
432 GtkWidget *button[3];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
433
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
434 GtkWidget *child_box;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
435 GtkWidget *top_event_box;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
436 GtkWidget *bottom_event_box;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
437 GtkWidget *child_widget_box;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
438 GtkWidget *image;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
439
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
440 GdkColor color;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
441 gint i, j;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
442 GdkCursor *cursor;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
443 GdkPixbuf *pixbuf;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
444
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
445 child_box = gtk_event_box_new ();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
446 child_widget_box = gtk_event_box_new ();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
447 top_event_box = gtk_event_box_new ();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
448 bottom_event_box = gtk_event_box_new ();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
449 table = gtk_table_new (4, 7, FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
450 gtk_table_set_row_spacings (GTK_TABLE (table), 1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
451 gtk_table_set_col_spacings (GTK_TABLE (table), 1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
452 gtk_table_set_row_spacing (GTK_TABLE (table), 3, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
453 gtk_table_set_col_spacing (GTK_TABLE (table), 6, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
454 gtk_table_set_row_spacing (GTK_TABLE (table), 2, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
455 gtk_table_set_col_spacing (GTK_TABLE (table), 5, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
456
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
457 for (i = 0; i < 3; i++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
458 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
459 button[i] = gtk_event_box_new ();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
460 gtk_widget_set_events (button[0], GDK_BUTTON_PRESS_MASK);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
461 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
462
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
463 gdk_color_parse (GTK_MDI_LABEL_BACKGROUND, &color);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
464
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
465 gtk_widget_modify_bg (top_event_box, GTK_STATE_NORMAL, &color);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
466 gtk_widget_modify_bg (bottom_event_box, GTK_STATE_NORMAL, &color);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
467 gtk_widget_modify_bg (child_box, GTK_STATE_NORMAL, &color);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
468 for (i = GTK_STATE_NORMAL; i < GTK_STATE_ACTIVE; i++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
469 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
470 for (j = 0; j < 3; j++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
471 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
472 gtk_widget_modify_bg (button[j], i, &color);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
473 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
474 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
475 gdk_color_parse (GTK_MDI_LABEL_FOREGROUND, &color);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
476 gtk_widget_modify_fg (label, GTK_STATE_NORMAL, &color);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
477 gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
478
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
479 gtk_container_add (GTK_CONTAINER (top_event_box), label);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
480 gtk_container_add (GTK_CONTAINER (child_widget_box), child_widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
481 gtk_widget_set_size_request (bottom_event_box, 2, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
482
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
483
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
484 pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **)minimize_xpm);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
485 image = gtk_image_new_from_pixbuf(pixbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
486 gtk_widget_show(image);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
487 gtk_container_add (GTK_CONTAINER (button[0]), image);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
488 pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **) maximize_xpm);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
489 image = gtk_image_new_from_pixbuf(pixbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
490 gtk_widget_show(image);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
491 gtk_container_add (GTK_CONTAINER (button[1]), image);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
492 pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **) kill_xpm);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
493 image = gtk_image_new_from_pixbuf(pixbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
494 gtk_widget_show(image);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
495 gtk_container_add (GTK_CONTAINER (button[2]), image);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
496
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
497 gtk_table_attach (GTK_TABLE (table), child_widget_box, 1, 6, 2, 3,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
498 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
499 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
500 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
501 gtk_table_attach (GTK_TABLE (table), top_event_box, 1, 2, 1, 2,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
502 GTK_FILL | GTK_EXPAND | GTK_SHRINK,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
503 0,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
504 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
505 gtk_table_attach (GTK_TABLE (table), bottom_event_box, 6, 7, 3, 4,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
506 0,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
507 0,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
508 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
509 gtk_table_attach (GTK_TABLE (table), button[0], 2, 3, 1, 2,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
510 0,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
511 0,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
512 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
513 gtk_table_attach (GTK_TABLE (table), button[1], 3, 4, 1, 2,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
514 0,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
515 0,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
516 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
517 gtk_table_attach (GTK_TABLE (table), button[2], 4, 5, 1, 2,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
518 0,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
519 0,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
520 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
521
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
522 gtk_container_add (GTK_CONTAINER (child_box), table);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
523
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
524 child = g_new (GtkMdiChild, 1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
525 child->widget = child_box;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
526 child->x = x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
527 child->y = y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
528 child->width = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
529 child->height = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
530 child->child = child_widget;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
531 child->mdi = mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
532 child->state = CHILD_NORMAL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
533
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
534 gtk_widget_set_parent (child_box, GTK_WIDGET (mdi));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
535 mdi->children = g_list_append (mdi->children, child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
536
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
537 gtk_widget_show (child_box);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
538 gtk_widget_show (table);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
539 gtk_widget_show (top_event_box);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
540 gtk_widget_show (bottom_event_box);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
541 gtk_widget_show (child_widget_box);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
542 for (i = 0; i < 3; i++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
543 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
544 gtk_widget_show (button[i]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
545 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
546
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
547 cursor = gdk_cursor_new (GDK_HAND1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
548 gtk_widget_realize (top_event_box);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
549 gdk_window_set_cursor (gtk_widget_get_window(top_event_box), cursor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
550 cursor = gdk_cursor_new (GDK_BOTTOM_RIGHT_CORNER);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
551 gtk_widget_realize (bottom_event_box);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
552 gdk_window_set_cursor (gtk_widget_get_window(bottom_event_box), cursor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
553
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
554 g_signal_connect (G_OBJECT (top_event_box), "event",
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
555 G_CALLBACK (move_child_callback),
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
556 child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
557 g_signal_connect (G_OBJECT (bottom_event_box), "event",
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
558 G_CALLBACK (resize_child_callback),
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
559 child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
560 g_signal_connect (G_OBJECT (button[0]), "button_press_event",
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
561 G_CALLBACK (iconify_child_callback),
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
562 child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
563 g_signal_connect (G_OBJECT (button[1]), "button_press_event",
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
564 G_CALLBACK (maximize_child_callback),
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
565 child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
566 g_signal_connect (G_OBJECT (button[2]), "button_press_event",
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
567 G_CALLBACK (kill_child_callback),
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
568 child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
569 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
570
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
571 static void gtk_mdi_move(GtkMdi *mdi, GtkWidget *widget, gint x, gint y)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
572 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
573 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
574
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
575 g_return_if_fail(GTK_IS_MDI(mdi));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
576 g_return_if_fail(GTK_IS_WIDGET(widget));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
577
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
578 child = get_child(mdi, widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
579 g_return_if_fail(child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
580
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
581 child->x = x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
582 child->y = y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
583 if (gtk_widget_get_visible(widget) && gtk_widget_get_visible(GTK_WIDGET(mdi)))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
584 gtk_widget_queue_resize(GTK_WIDGET(widget));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
585 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
586
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
587 static void gtk_mdi_get_pos(GtkMdi *mdi, GtkWidget *widget, gint *x, gint *y)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
588 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
589 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
590
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
591 g_return_if_fail(GTK_IS_MDI (mdi));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
592 g_return_if_fail(GTK_IS_WIDGET (widget));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
593
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
594 child = get_child(mdi, widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
595 g_return_if_fail(child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
596
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
597 *x = child->x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
598 *y = child->y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
599 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
600
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
601 static void gtk_mdi_set_state(GtkMdi *mdi, GtkWidget *widget, GtkMdiChildState state)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
602 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
603 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
604
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
605 g_return_if_fail (GTK_IS_MDI (mdi));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
606 g_return_if_fail (GTK_IS_WIDGET (widget));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
607
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
608 child = get_child (mdi, widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
609 g_return_if_fail (child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
610
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
611 child->state = state;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
612 if (gtk_widget_get_visible(child->widget) && gtk_widget_get_visible(GTK_WIDGET(mdi)))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
613 gtk_widget_queue_resize(GTK_WIDGET(child->widget));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
614 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
615
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
616 static void gtk_mdi_remove(GtkMdi *mdi, GtkWidget *widget)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
617 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
618 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
619
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
620 g_return_if_fail (GTK_IS_MDI (mdi));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
621 child = get_child (mdi, widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
622 g_return_if_fail (child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
623 gtk_mdi_remove_true (GTK_CONTAINER (mdi), child->widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
624 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
625
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
626 static void gtk_mdi_realize(GtkWidget *widget)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
627 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
628 GtkMdi *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
629 GdkWindowAttr attributes;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
630 gint attributes_mask;
1185
415c25f87d57 Fix for MDI support for GTK3. Haven't tested completely...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1177
diff changeset
631 GdkWindow *thiswindow;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
632
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
633 mdi = GTK_MDI (widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
634
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
635 g_return_if_fail (widget != NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
636 g_return_if_fail (GTK_IS_MDI (mdi));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
637
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
638 gtk_widget_set_realized(widget, TRUE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
639
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
640 GtkAllocation allocation;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
641 gtk_widget_get_allocation(widget, &allocation);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
642 attributes.x = allocation.x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
643 attributes.y = allocation.y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
644 attributes.width = allocation.width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
645 attributes.height = allocation.height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
646 attributes.wclass = GDK_INPUT_OUTPUT;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
647 attributes.window_type = GDK_WINDOW_CHILD;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
648 attributes.event_mask = gtk_widget_get_events (widget) |
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
649 GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK |
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
650 GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK |
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
651 GDK_POINTER_MOTION_HINT_MASK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
652 attributes.visual = gtk_widget_get_visual (widget);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
653
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
654 attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
1185
415c25f87d57 Fix for MDI support for GTK3. Haven't tested completely...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1177
diff changeset
655 thiswindow = gdk_window_new (gtk_widget_get_parent_window(widget), &attributes, attributes_mask);
415c25f87d57 Fix for MDI support for GTK3. Haven't tested completely...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1177
diff changeset
656 gtk_widget_set_window(widget, thiswindow);
415c25f87d57 Fix for MDI support for GTK3. Haven't tested completely...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1177
diff changeset
657
415c25f87d57 Fix for MDI support for GTK3. Haven't tested completely...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1177
diff changeset
658 gtk_widget_set_style(widget, gtk_style_attach (gtk_widget_get_style(widget), thiswindow));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
659
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
660 gdk_window_set_user_data (gtk_widget_get_window(widget), widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
661
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
662 gtk_style_set_background (gtk_widget_get_style(widget), gtk_widget_get_window(widget), GTK_STATE_NORMAL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
663 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
664
836
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
665 static void gtk_mdi_get_preferred_width (GtkWidget *widget, gint *minimum_width, gint *natural_width)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
666 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
667 GtkMdi *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
668 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
669 GList *children;
836
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
670 gint child_minimum_width, child_natural_width;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
671
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
672 mdi = GTK_MDI (widget);
836
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
673 *natural_width = *minimum_width = GTK_MDI_DEFAULT_WIDTH;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
674
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
675 children = mdi->children;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
676 while(children)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
677 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
678 child = children->data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
679 children = children->next;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
680
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
681 if(gtk_widget_get_visible(child->widget))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
682 {
836
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
683 gtk_widget_get_preferred_width(child->widget, &child_minimum_width, &child_natural_width);
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
684 }
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
685 }
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
686 }
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
687
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
688 static void gtk_mdi_get_preferred_height (GtkWidget *widget, gint *minimum_height, gint *natural_height)
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
689 {
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
690 GtkMdi *mdi;
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
691 GtkMdiChild *child;
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
692 GList *children;
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
693 gint child_minimum_height, child_natural_height;
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
694
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
695 mdi = GTK_MDI (widget);
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
696 *natural_height = *minimum_height = GTK_MDI_DEFAULT_HEIGHT;
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
697
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
698 children = mdi->children;
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
699 while(children)
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
700 {
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
701 child = children->data;
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
702 children = children->next;
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
703
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
704 if(gtk_widget_get_visible(child->widget))
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
705 {
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
706 gtk_widget_get_preferred_height(child->widget, &child_minimum_height, &child_natural_height);
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
707 }
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
708 }
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
709 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
710
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
711 static void gtk_mdi_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
712 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
713 GtkMdi *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
714 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
715 GtkAllocation child_allocation;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
716 GtkRequisition child_requisition;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
717 GList *children;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
718
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
719 mdi = GTK_MDI (widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
720
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
721 gtk_widget_set_allocation(widget, allocation);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
722
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
723 if(gtk_widget_get_realized(widget))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
724 gdk_window_move_resize (gtk_widget_get_window(widget),
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
725 allocation->x,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
726 allocation->y,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
727 allocation->width,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
728 allocation->height);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
729
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
730
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
731 children = mdi->children;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
732 while(children)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
733 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
734 child = children->data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
735 children = children->next;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
736
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
737 if(gtk_widget_get_visible(child->widget))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
738 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
739 gtk_widget_get_child_requisition (child->widget, &child_requisition);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
740 child_allocation.x = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
741 child_allocation.y = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
742 switch (child->state)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
743 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
744 case CHILD_NORMAL:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
745 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
746 if ((child->width < 0) && (child->height < 0))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
747 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
748 child_allocation.width = child_requisition.width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
749 child_allocation.height = child_requisition.height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
750 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
751 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
752 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
753 child_allocation.width = child->width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
754 child_allocation.height = child->height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
755 child->width = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
756 child->height = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
757 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
758 child_allocation.x += child->x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
759 child_allocation.y += child->y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
760 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
761 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
762 case CHILD_MAXIMIZED:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
763 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
764 if ((child->width < 0) && (child->height < 0))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
765 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
766 child->width = child_requisition.width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
767 child->height = child_requisition.height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
768 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
769 child_allocation.width = allocation->width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
770 child_allocation.height = allocation->height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
771 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
772 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
773 case CHILD_ICONIFIED:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
774 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
775 if ((child->width < 0) && (child->height < 0))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
776 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
777 child->width = child_requisition.width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
778 child->height = child_requisition.height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
779 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
780 child_allocation.x += child->x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
781 child_allocation.y += child->y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
782 child_allocation.width = child_requisition.width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
783 child_allocation.height = GTK_MDI_MIN_HEIGHT;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
784 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
785 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
786 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
787 gtk_widget_size_allocate (child->widget, &child_allocation);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
788 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
789 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
790 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
791
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
792 static gboolean gtk_mdi_draw(GtkWidget *widget, cairo_t *cr)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
793 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
794 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
795 GList *children;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
796 GtkMdi *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
797
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
798 g_return_val_if_fail (widget != NULL, FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
799 g_return_val_if_fail (GTK_IS_MDI (widget), FALSE);
836
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
800 g_return_val_if_fail (cr != NULL, FALSE);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
801
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
802 mdi = GTK_MDI (widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
803 for (children = mdi->children; children; children = children->next)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
804 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
805 child = (GtkMdiChild *) children->data;
836
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
806 gtk_container_propagate_draw (GTK_CONTAINER (mdi),
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
807 child->widget,
836
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
808 cr);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
809 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
810 return FALSE;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
811 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
812
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
813 static void gtk_mdi_add(GtkContainer *container, GtkWidget *widget)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
814 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
815 GtkWidget *label;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
816 label = gtk_label_new ("");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
817 gtk_mdi_put (GTK_MDI (container), widget, 0, 0, label);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
818 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
819
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
820 static void gtk_mdi_remove_true(GtkContainer *container, GtkWidget *widget)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
821 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
822 GtkMdi *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
823 GtkMdiChild *child = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
824 GList *children;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
825
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
826 mdi = GTK_MDI (container);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
827
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
828 children = mdi->children;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
829 while (children)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
830 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
831 child = children->data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
832 if (child->widget == widget)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
833 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
834
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
835 children = children->next;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
836 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
837
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
838 if(child)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
839 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
840 gtk_widget_unparent (child->widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
841 g_free (child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
842 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
843 mdi->children = g_list_remove_link (mdi->children, children);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
844 g_list_free (children);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
845 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
846
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
847 static void gtk_mdi_forall(GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
848 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
849 GtkMdi *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
850 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
851 GList *children;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
852
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
853 g_return_if_fail (callback != NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
854
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
855 mdi = GTK_MDI (container);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
856
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
857 children = mdi->children;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
858 while (children)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
859 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
860 child = children->data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
861 children = children->next;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
862
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
863 (*callback) (child->widget, callback_data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
864 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
865 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
866
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
867 static gboolean move_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
868 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
869 GtkMdi *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
870 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
871
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
872 child = (GtkMdiChild *) data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
873 mdi = child->mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
874
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
875 g_return_val_if_fail (GTK_IS_MDI (mdi), FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
876 g_return_val_if_fail (GTK_IS_EVENT_BOX (widget), FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
877
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
878
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
879 switch (event->type)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
880 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
881 case GDK_2BUTTON_PRESS:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
882 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
883 gdk_window_raise (gtk_widget_get_window(child->widget));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
884 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
885 case GDK_BUTTON_PRESS:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
886 if (child->state == CHILD_MAXIMIZED)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
887 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
888 if (mdi->drag_button < 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
889 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
890 if (gdk_pointer_grab (event->button.window,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
891 FALSE,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
892 GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
893 GDK_BUTTON_RELEASE_MASK,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
894 NULL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
895 NULL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
896 event->button.time) != GDK_GRAB_SUCCESS)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
897 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
898
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
899 mdi->drag_button = event->button.button;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
900
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
901 mdi->drag_start.x = event->button.x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
902 mdi->drag_start.y = event->button.y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
903 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
904 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
905
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
906 case GDK_BUTTON_RELEASE:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
907 if (mdi->drag_button < 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
908 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
909
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
910 if (mdi->drag_button == event->button.button)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
911 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
912 int x, y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
913
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
914 gdk_pointer_ungrab (event->button.time);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
915 mdi->drag_button = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
916
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
917 x = event->button.x + child->x - mdi->drag_start.x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
918 y = event->button.y + child->y - mdi->drag_start.y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
919
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
920 gtk_mdi_move (mdi, child->child, x, y);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
921 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
922 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
923
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
924 case GDK_MOTION_NOTIFY:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
925 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
926 int x, y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
927
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
928 if (mdi->drag_button < 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
929 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
930
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
931 gdk_window_get_pointer (gtk_widget_get_window(widget), &x, &y, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
932
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
933
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
934 x = x - mdi->drag_start.x + child->x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
935 y = y - mdi->drag_start.y + child->y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
936
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
937
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
938 gtk_mdi_move (mdi, child->child, x, y);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
939 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
940 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
941
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
942 default:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
943 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
944 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
945
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
946 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
947 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
948
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
949 static gboolean resize_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
950 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
951 GtkMdi *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
952 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
953
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
954 child = (GtkMdiChild *) data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
955 mdi = child->mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
956
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
957 g_return_val_if_fail (GTK_IS_MDI (mdi), FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
958 g_return_val_if_fail (GTK_IS_EVENT_BOX (widget), FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
959
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
960 switch (event->type)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
961 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
962 case GDK_BUTTON_PRESS:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
963 if (mdi->drag_button < 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
964 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
965 if (gdk_pointer_grab (event->button.window,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
966 FALSE,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
967 GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
968 GDK_BUTTON_RELEASE_MASK,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
969 NULL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
970 NULL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
971 event->button.time) != GDK_GRAB_SUCCESS)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
972 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
973
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
974 mdi->drag_button = event->button.button;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
975 if ((child->state == CHILD_MAXIMIZED) || (child->state == CHILD_ICONIFIED))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
976 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
977 GtkAllocation allocation;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
978
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
979 child->state = CHILD_NORMAL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
980 gtk_widget_get_allocation(child->widget, &allocation);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
981 child->x = allocation.x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
982 child->y = allocation.y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
983 child->width = allocation.width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
984 child->height = allocation.height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
985 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
986
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
987 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
988 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
989
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
990 case GDK_BUTTON_RELEASE:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
991 if (mdi->drag_button < 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
992 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
993
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
994 if (mdi->drag_button == event->button.button)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
995 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
996 int width, height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
997 GtkAllocation allocation;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
998
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
999 gdk_pointer_ungrab (event->button.time);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1000 mdi->drag_button = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1001
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1002 gtk_widget_get_allocation(widget, &allocation);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1003 width = event->button.x + allocation.x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1004 height = event->button.y + allocation.y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1005
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1006 width = MAX (width, GTK_MDI_MIN_WIDTH);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1007 height = MAX (height, GTK_MDI_MIN_HEIGHT);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1008
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1009 gtk_widget_set_size_request (child->widget, width, height);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1010 gtk_widget_queue_resize (child->widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1011 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1012 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1013
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1014 case GDK_MOTION_NOTIFY:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1015 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1016 int x, y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1017 int width, height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1018 GtkAllocation allocation;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1019
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1020 if (mdi->drag_button < 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1021 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1022
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1023 gdk_window_get_pointer (gtk_widget_get_window(widget), &x, &y, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1024
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1025 gtk_widget_get_allocation(widget, &allocation);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1026 width = x + allocation.x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1027 height = y + allocation.y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1028
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1029 width = MAX (width, GTK_MDI_MIN_WIDTH);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1030 height = MAX (height, GTK_MDI_MIN_HEIGHT);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1031
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1032 gtk_widget_set_size_request (child->widget, width, height);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1033 gtk_widget_queue_resize (child->widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1034 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1035 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1036
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1037 default:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1038 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1039 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1040
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1041 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1042 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1043
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1044 static gboolean iconify_child_callback (GtkWidget *widget, GdkEvent *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1045 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1046 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1047 child = (GtkMdiChild *) data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1048 if(child->state == CHILD_ICONIFIED)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1049 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1050 child->state = CHILD_NORMAL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1051 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1052 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1053 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1054 child->state = CHILD_ICONIFIED;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1055 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1056 if(gtk_widget_get_visible(child->widget))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1057 gtk_widget_queue_resize(GTK_WIDGET (child->widget));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1058 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1059 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1060
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1061 static gboolean maximize_child_callback (GtkWidget *widget, GdkEvent * event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1062 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1063 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1064 child = (GtkMdiChild *) data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1065 if (child->state == CHILD_MAXIMIZED)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1066 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1067 child->state = CHILD_NORMAL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1068 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1069 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1070 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1071 child->state = CHILD_MAXIMIZED;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1072 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1073 if(gtk_widget_get_visible(child->widget))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1074 gtk_widget_queue_resize(GTK_WIDGET (child->widget));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1075 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1076 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1077
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1078 static gboolean kill_child_callback (GtkWidget *widget, GdkEvent *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1079 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1080 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1081 GtkMdi *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1082
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1083 child = (GtkMdiChild *) data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1084 mdi = child->mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1085
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1086 g_return_val_if_fail (GTK_IS_MDI (mdi), FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1087
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1088 gtk_mdi_remove_true (GTK_CONTAINER (mdi), child->widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1089 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1090 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1091
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1092 static GtkMdiChild *get_child (GtkMdi *mdi, GtkWidget *widget)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1093 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1094 GList *children;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1095
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1096 children = mdi->children;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1097 while (children)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1098 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1099 GtkMdiChild *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1100
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1101 child = children->data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1102 children = children->next;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1103
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1104 if (child->child == widget)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1105 return child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1106 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1107
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1108 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1109 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1110
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1111 static void _dw_msleep(long period)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1112 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1113 #ifdef __sun__
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1114 /* usleep() isn't threadsafe on Solaris */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1115 struct timespec req;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1116
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1117 req.tv_sec = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1118 req.tv_nsec = period * 10000000;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1119
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1120 nanosleep(&req, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1121 #else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1122 usleep(period * 1000);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1123 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1124 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1125
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1126 /* Finds the translation function for a given signal name */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1127 static void *_findsigfunc(char *signame)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1128 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1129 int z;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1130
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1131 for(z=0;z<SIGNALMAX;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1132 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1133 if(strcasecmp(signame, SignalTranslate[z].name) == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1134 return SignalTranslate[z].func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1135 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1136 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1137 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1138
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1139 static SignalHandler _get_signal_handler(GtkWidget *widget, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1140 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
1141 int counter = GPOINTER_TO_INT(data);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1142 SignalHandler sh;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1143 char text[100];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1144
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1145 sprintf(text, "_dw_sigwindow%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1146 sh.window = (HWND)g_object_get_data(G_OBJECT(widget), text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1147 sprintf(text, "_dw_sigfunc%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1148 sh.func = (void *)g_object_get_data(G_OBJECT(widget), text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1149 sprintf(text, "_dw_intfunc%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1150 sh.intfunc = (void *)g_object_get_data(G_OBJECT(widget), text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1151 sprintf(text, "_dw_sigdata%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1152 sh.data = g_object_get_data(G_OBJECT(widget), text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1153 sprintf(text, "_dw_sigcid%d", counter);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
1154 sh.cid = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), text));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1155
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1156 return sh;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1157 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1158
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1159 static void _remove_signal_handler(GtkWidget *widget, int counter)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1160 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1161 char text[100];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1162 gint cid;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1163
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1164 sprintf(text, "_dw_sigcid%d", counter);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
1165 cid = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), text));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1166 g_signal_handler_disconnect(G_OBJECT(widget), cid);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1167 g_object_set_data(G_OBJECT(widget), text, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1168 sprintf(text, "_dw_sigwindow%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1169 g_object_set_data(G_OBJECT(widget), text, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1170 sprintf(text, "_dw_sigfunc%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1171 g_object_set_data(G_OBJECT(widget), text, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1172 sprintf(text, "_dw_intfunc%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1173 g_object_set_data(G_OBJECT(widget), text, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1174 sprintf(text, "_dw_sigdata%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1175 g_object_set_data(G_OBJECT(widget), text, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1176 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1177
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1178 static int _set_signal_handler(GtkWidget *widget, HWND window, void *func, gpointer data, void *intfunc)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1179 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
1180 int counter = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "_dw_sigcounter"));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1181 char text[100];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1182
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1183 sprintf(text, "_dw_sigwindow%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1184 g_object_set_data(G_OBJECT(widget), text, (gpointer)window);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1185 sprintf(text, "_dw_sigfunc%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1186 g_object_set_data(G_OBJECT(widget), text, (gpointer)func);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1187 sprintf(text, "_dw_intfunc%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1188 g_object_set_data(G_OBJECT(widget), text, (gpointer)intfunc);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1189 sprintf(text, "_dw_sigdata%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1190 g_object_set_data(G_OBJECT(widget), text, (gpointer)data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1191
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1192 counter++;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1193 g_object_set_data(G_OBJECT(widget), "_dw_sigcounter", GINT_TO_POINTER(counter));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1194
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1195 return counter - 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1196 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1197
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1198 static void _set_signal_handler_id(GtkWidget *widget, int counter, gint cid)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1199 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1200 char text[100];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1201
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1202 sprintf(text, "_dw_sigcid%d", counter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1203 g_object_set_data(G_OBJECT(widget), text, GINT_TO_POINTER(cid));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1204 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1205
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1206 static gint _set_focus_event(GtkWindow *window, GtkWidget *widget, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1207 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1208 SignalHandler work = _get_signal_handler((GtkWidget *)window, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1209 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1210
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1211 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1212 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1213 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1214 int (*setfocusfunc)(HWND, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1215
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1216 retval = setfocusfunc(work.window, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1217 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1218 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1219 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1220
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1221 static gint _button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1222 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1223 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1224 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1225
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1226 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1227 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1228 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1229 int (*buttonfunc)(HWND, int, int, int, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1230 int mybutton = event->button;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1231
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1232 if(event->button == 3)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1233 mybutton = 2;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1234 else if(event->button == 2)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1235 mybutton = 3;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1236
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1237 retval = buttonfunc(work.window, event->x, event->y, mybutton, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1238 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1239 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1240 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1241
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1242 static gint _button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1243 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1244 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1245 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1246
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1247 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1248 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1249 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1250 int (*buttonfunc)(HWND, int, int, int, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1251 int mybutton = event->button;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1252
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1253 if(event->button == 3)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1254 mybutton = 2;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1255 else if(event->button == 2)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1256 mybutton = 3;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1257
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1258 retval = buttonfunc(work.window, event->x, event->y, mybutton, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1259 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1260 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1261 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1262
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1263 static gint _motion_notify_event(GtkWidget *widget, GdkEventMotion *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1264 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1265 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1266 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1267
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1268 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1269 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1270 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1271 int (*motionfunc)(HWND, int, int, int, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1272 int keys = 0, x, y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1273 GdkModifierType state;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1274
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1275 if (event->is_hint)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1276 gdk_window_get_pointer (event->window, &x, &y, &state);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1277 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1278 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1279 x = event->x;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1280 y = event->y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1281 state = event->state;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1282 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1283
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1284 if (state & GDK_BUTTON1_MASK)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1285 keys = DW_BUTTON1_MASK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1286 if (state & GDK_BUTTON3_MASK)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1287 keys |= DW_BUTTON2_MASK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1288 if (state & GDK_BUTTON2_MASK)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1289 keys |= DW_BUTTON3_MASK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1290
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1291 retval = motionfunc(work.window, x, y, keys, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1292 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1293 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1294 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1295
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1296 static gint _delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1297 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1298 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1299 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1300
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1301 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1302 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1303 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1304 int (*closefunc)(HWND, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1305
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1306 retval = closefunc(work.window, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1307 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1308 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1309 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1310
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1311 static gint _key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1312 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1313 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1314 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1315
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1316 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1317 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1318 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1319 int (*keypressfunc)(HWND, char, int, int, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1320
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1321 retval = keypressfunc(work.window, *event->string, event->keyval,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1322 event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK), work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1323 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1324 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1325 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1326
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1327 static gint _generic_event(GtkWidget *widget, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1328 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1329 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1330 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1331
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1332 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1333 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1334 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1335 int (*genericfunc)(HWND, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1336
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1337 retval = genericfunc(work.window, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1338 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1339 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1340 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1341
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1342 static gint _activate_event(GtkWidget *widget, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1343 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1344 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1345 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1346
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1347 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1348 if(work.window && !_dw_ignore_click)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1349 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1350 int (*activatefunc)(HWND, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1351
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1352 retval = activatefunc(popup ? popup : work.window, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1353 popup = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1354 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1355 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1356 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1357
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1358 static gint _configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1359 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1360 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1361 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1362
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1363 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1364 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1365 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1366 int (*sizefunc)(HWND, int, int, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1367
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1368 retval = sizefunc(work.window, event->width, event->height, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1369 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1370 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1371 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1372
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
1373 static gint _expose_event(GtkWidget *widget, cairo_t *cr, gpointer data)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1374 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1375 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1376 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1377
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1378 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1379 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1380 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1381 DWExpose exp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1382 int (*exposefunc)(HWND, DWExpose *, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1383
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
1384 exp.x = exp.y = 0;
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1385 exp.width = gtk_widget_get_allocated_width(widget);
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
1386 exp.height = gtk_widget_get_allocated_height(widget);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1387 retval = exposefunc(work.window, &exp, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1388 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1389 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1390 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1391
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1392 static gint _combobox_select_event(GtkWidget *widget, gpointer data)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1393 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1394 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1395 static int _dw_recursing = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1396 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1397
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1398 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1399 if(_dw_recursing)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1400 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1401
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1402 if(work.window && GTK_IS_COMBO_BOX(widget))
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1403 {
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1404 GtkTreeModel *store = gtk_combo_box_get_model(GTK_COMBO_BOX(widget));
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1405
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1406 if(store)
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1407 {
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1408 GtkTreeIter iter;
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1409 GtkTreePath *path;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1410
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1411 _dw_recursing = 1;
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1412
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1413 if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widget), &iter))
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1414 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1415 path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1416
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1417 if(path)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1418 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1419 gint *indices = gtk_tree_path_get_indices(path);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1420
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1421 if(indices)
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1422 {
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1423 int (*selectfunc)(HWND, int, void *) = work.func;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1424
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1425 retval = selectfunc(work.window, indices[0], work.data);
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1426 }
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1427 gtk_tree_path_free(path);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1428 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1429 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1430
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1431 _dw_recursing = 0;
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1432 }
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1433 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1434 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1435 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1436
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1437 static gint _tree_context_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1438 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1439 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1440 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1441
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1442 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1443 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1444 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1445 if(event->button == 3)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1446 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1447 int (*contextfunc)(HWND, char *, int, int, void *, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1448 char *text = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1449 void *itemdata = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1450
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1451 if(widget && GTK_IS_TREE_VIEW(widget))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1452 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1453 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1454 GtkTreeModel *store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1455 GtkTreeIter iter;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1456
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1457 if(sel && gtk_tree_selection_get_mode(sel) != GTK_SELECTION_MULTIPLE &&
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1458 gtk_tree_selection_get_selected(sel, NULL, &iter))
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1459 {
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1460 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1461 {
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1462 gtk_tree_model_get(store, &iter, 0, &text, 2, &itemdata, -1);
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1463 }
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1464 else
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1465 {
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1466 gtk_tree_model_get(store, &iter, 0, &text, -1);
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1467 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1468 }
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1469 else
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1470 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1471 GtkTreePath *path;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1472
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1473 gtk_tree_view_get_cursor(GTK_TREE_VIEW(widget), &path, NULL);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1474 if(path)
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1475 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1476 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1477
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1478 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1479 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1480 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1481 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1482 gtk_tree_model_get(store, &iter, 0, &text, 2, &itemdata, -1);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1483 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1484 else
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1485 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1486 gtk_tree_model_get(store, &iter, 0, &text, -1);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1487 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1488 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1489 gtk_tree_path_free(path);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1490 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1491 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1492 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1493
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1494 retval = contextfunc(work.window, text, event->x, event->y, work.data, itemdata);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1495 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1496 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1497 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1498 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1499
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1500 static gint _tree_select_event(GtkTreeSelection *sel, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1501 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1502 GtkWidget *item = NULL, *widget = (GtkWidget *)gtk_tree_selection_get_tree_view(sel);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1503 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1504
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1505 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1506 if(widget)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1507 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1508 SignalHandler work = _get_signal_handler(widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1509
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1510 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1511 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1512 int (*treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1513 GtkTreeIter iter;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1514 char *text = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1515 void *itemdata = NULL;
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1516 GtkTreeModel *store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1517
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1518 if(g_object_get_data(G_OBJECT(widget), "_dw_double_click"))
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1519 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1520 g_object_set_data(G_OBJECT(widget), "_dw_double_click", GINT_TO_POINTER(0));
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1521 return TRUE;
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1522 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1523
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1524 if(gtk_tree_selection_get_mode(sel) != GTK_SELECTION_MULTIPLE &&
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1525 gtk_tree_selection_get_selected(sel, NULL, &iter))
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1526 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1527 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1528 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1529 gtk_tree_model_get(store, &iter, 0, &text, 2, &itemdata, 3, &item, -1);
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1530 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1531 }
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1532 else if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1533 {
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1534 gtk_tree_model_get(store, &iter, 0, &text, -1);
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1535 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1536 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1537 else
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1538 {
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1539 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1540
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1541 if(path)
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1542 {
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1543 gint *indices = gtk_tree_path_get_indices(path);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1544
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1545 if(indices)
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1546 {
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1547 int (*selectfunc)(HWND, int, void *) = work.func;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1548
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1549 retval = selectfunc(work.window, indices[0], work.data);
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1550 }
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1551 gtk_tree_path_free(path);
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1552 }
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1553 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1554 }
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1555 else
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1556 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1557 GtkTreePath *path;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1558
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1559 gtk_tree_view_get_cursor(GTK_TREE_VIEW(widget), &path, NULL);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1560 if(path)
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1561 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1562 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1563
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1564 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1565 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1566 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1567 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1568 gtk_tree_model_get(store, &iter, 0, &text, 2, &itemdata, 3, &item, -1);
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1569 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1570 }
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1571 else if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1572 {
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1573 gtk_tree_model_get(store, &iter, 0, &text, -1);
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1574 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1575 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1576 else
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1577 {
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1578 gint *indices = gtk_tree_path_get_indices(path);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1579
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1580 if(indices)
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1581 {
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1582 int (*selectfunc)(HWND, int, void *) = work.func;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1583
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1584 retval = selectfunc(work.window, indices[0], work.data);
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
1585 }
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1586 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1587 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1588 gtk_tree_path_free(path);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1589 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1590 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1591 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1592 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1593 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1594 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1595
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1596 static gint _tree_expand_event(GtkTreeView *widget, GtkTreeIter *iter, GtkTreePath *path, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1597 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1598 SignalHandler work = _get_signal_handler((GtkWidget *)widget, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1599 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1600
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1601 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1602 if(!_dw_ignore_expand && work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1603 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1604 int (*treeexpandfunc)(HWND, HTREEITEM, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1605 retval = treeexpandfunc(work.window, (HTREEITEM)iter, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1606 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1607 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1608 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1609
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1610 static gint _container_enter_event(GtkWidget *widget, GdkEventAny *event, gpointer data)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1611 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1612 SignalHandler work = _get_signal_handler(widget, data);
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1613 GdkEventKey *keyevent = (GdkEventKey *)event;
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1614 GdkEventButton *buttonevent = (GdkEventButton *)event;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1615 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1616
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1617 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1618 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1619 {
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1620 /* Handle both key and button events together */
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1621 if((event->type == GDK_2BUTTON_PRESS && buttonevent->button == 1) ||
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1622 (event->type == GDK_KEY_PRESS && keyevent->keyval == VK_RETURN))
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1623 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1624 int (*contextfunc)(HWND, char *, void *) = work.func;
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1625 char *text = NULL;
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1626
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1627 /* Prevent some double events from happening */
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1628 if(event->type == GDK_2BUTTON_PRESS)
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1629 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1630 g_object_set_data(G_OBJECT(widget), "_dw_double_click", GINT_TO_POINTER(1));
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1631 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1632
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1633 /* Sanity check */
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1634 if(GTK_IS_TREE_VIEW(widget))
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1635 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1636 GtkTreePath *path;
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1637 GtkTreeModel *store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1638
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1639 gtk_tree_view_get_cursor(GTK_TREE_VIEW(widget), &path, NULL);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1640 if(path)
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1641 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1642 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1643
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1644 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1645 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1646 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1647 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1648 gtk_tree_model_get(store, &iter, 0, &text, -1);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1649 retval = contextfunc(work.window, text, work.data);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1650 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1651 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1652 gtk_tree_path_free(path);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1653 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1654 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1655 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1656 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1657 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1658 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1659
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1660 /* Return the logical page id from the physical page id */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1661 int _get_logical_page(HWND handle, unsigned long pageid)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1662 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1663 int z;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1664 GtkWidget **pagearray = g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1665 GtkWidget *thispage = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), pageid);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1666
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1667 if(pagearray && thispage)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1668 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1669 for(z=0;z<256;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1670 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1671 if(thispage == pagearray[z])
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1672 return z;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1673 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1674 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1675 return 256;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1676 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1677
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1678
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1679 static gint _switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1680 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1681 SignalHandler work = _get_signal_handler((GtkWidget *)notebook, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1682 int retval = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1683
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1684 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1685 if(work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1686 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1687 int (*switchpagefunc)(HWND, unsigned long, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1688 retval = switchpagefunc(work.window, _get_logical_page(GTK_WIDGET(notebook), page_num), work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1689 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1690 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1691 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1692
786
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
1693 static gint _column_click_event(GtkWidget *widget, gpointer data)
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
1694 {
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
1695 GtkWidget *tree = data;
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
1696 gint handlerdata = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(tree), "_dw_column_click_id"));
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
1697 SignalHandler work;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1698 int retval = FALSE;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1699
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
1700 if(handlerdata)
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
1701 {
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
1702 work = _get_signal_handler(tree, GINT_TO_POINTER(handlerdata-1));
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
1703
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
1704 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
1705 if(work.window)
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
1706 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
1707 int column_num = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "_dw_column"));
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
1708 int (*clickcolumnfunc)(HWND, int, void *) = work.func;
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
1709 retval = clickcolumnfunc(work.window, column_num, work.data);
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
1710 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1711 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1712 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1713 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1714
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1715 static int _round_value(gfloat val)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1716 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1717 int newval = (int)val;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1718
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1719 if(val >= 0.5 + (gfloat)newval)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1720 newval++;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1721
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1722 return newval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1723 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1724
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1725 static gint _value_changed_event(GtkAdjustment *adjustment, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1726 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1727 int max = _round_value(gtk_adjustment_get_upper(adjustment));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1728 int val = _round_value(gtk_adjustment_get_value(adjustment));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1729 GtkWidget *slider = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_slider");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1730 GtkWidget *spinbutton = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_spinbutton");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1731 GtkWidget *scrollbar = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_scrollbar");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1732
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1733 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1734 if (slider)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1735 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1736 SignalHandler work = _get_signal_handler((GtkWidget *)adjustment, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1737
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1738 if (work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1739 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1740 int (*valuechangedfunc)(HWND, int, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1741
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1742 if(GTK_IS_VSCALE(slider))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1743 valuechangedfunc(work.window, (max - val) - 1, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1744 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1745 valuechangedfunc(work.window, val, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1746 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1747 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1748 else if (scrollbar || spinbutton)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1749 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1750 SignalHandler work = _get_signal_handler((GtkWidget *)adjustment, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1751
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1752 if (work.window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1753 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1754 int (*valuechangedfunc)(HWND, int, void *) = work.func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1755
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1756 valuechangedfunc(work.window, val, work.data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1757 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1758 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1759 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1760 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1761
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1762 static gint _default_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1763 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1764 GtkWidget *next = (GtkWidget *)data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1765
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1766 if ( dbgfp != NULL ) _dw_log("%s %d: %s\n",__FILE__,__LINE__,__func__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1767 if(next)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1768 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1769 if(event->keyval == GDK_KEY_Return)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1770 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1771 if(GTK_IS_BUTTON(next))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1772 g_signal_emit_by_name(G_OBJECT(next), "clicked");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1773 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1774 gtk_widget_grab_focus(next);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1775 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1776 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1777 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1778 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1779
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1780 static GdkPixbuf *_find_pixbuf(HICN icon, unsigned long *userwidth, unsigned long *userheight)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1781 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1782 char *data = NULL;
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
1783 int z, id = GPOINTER_TO_INT(icon);
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1784
1289
5fb54aeba5e0 Allow removing icons from containers on GTK2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1287
diff changeset
1785 /* Quick dropout for non-handle */
5fb54aeba5e0 Allow removing icons from containers on GTK2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1287
diff changeset
1786 if(!icon)
5fb54aeba5e0 Allow removing icons from containers on GTK2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1287
diff changeset
1787 return NULL;
5fb54aeba5e0 Allow removing icons from containers on GTK2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1287
diff changeset
1788
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1789 if(id > 65535)
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1790 {
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1791 GdkPixbuf *icon_pixbuf = icon;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1792
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1793 if(userwidth)
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1794 *userwidth = gdk_pixbuf_get_width(icon_pixbuf);
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1795 if(userheight)
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1796 *userheight = gdk_pixbuf_get_height(icon_pixbuf);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1797
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1798 return icon;
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1799 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1800
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1801 for(z=0;z<_resources.resource_max;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1802 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1803 if(_resources.resource_id[z] == id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1804 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1805 data = _resources.resource_data[z];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1806 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1807 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1808 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1809
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1810 if(data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1811 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1812 GdkPixbuf *icon_pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1813
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1814 if(userwidth)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1815 *userwidth = gdk_pixbuf_get_width(icon_pixbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1816 if(userheight)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1817 *userheight = gdk_pixbuf_get_height(icon_pixbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1818
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1819 return icon_pixbuf;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1820 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1821 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1822 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1823
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1824 void _init_thread(void)
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1825 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1826 GdkColor *foreground = malloc(sizeof(GdkColor));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1827
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1828 foreground->pixel = foreground->red = foreground->green = foreground->blue = 0;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1829 pthread_setspecific(_dw_fg_color_key, foreground);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1830 pthread_setspecific(_dw_bg_color_key, NULL);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1831 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1832
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1833 /* Try to load the mozilla embed shared libary */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1834 #ifdef USE_GTKMOZEMBED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1835 #include <ctype.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1836
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1837 void init_mozembed(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1838 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1839 void *handle = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1840 gchar *profile;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1841 handle = dlopen( "libgtkembedmoz.so", RTLD_LAZY );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1842
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1843 /* If we loaded it, grab the symbols we want */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1844 if ( handle )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1845 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1846 _gtk_moz_embed_go_back = dlsym(handle, "gtk_moz_embed_go_back");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1847 _gtk_moz_embed_go_forward = dlsym(handle, "gtk_moz_embed_go_forward");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1848 _gtk_moz_embed_load_url = dlsym(handle, "gtk_moz_embed_load_url");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1849 _gtk_moz_embed_reload = dlsym(handle, "gtk_moz_embed_reload");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1850 _gtk_moz_embed_stop_load = dlsym(handle, "gtk_moz_embed_stop_load");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1851 _gtk_moz_embed_render_data = dlsym(handle, "gtk_moz_embed_render_data");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1852 _dw_moz_embed_get_type = dlsym(handle, "gtk_moz_embed_get_type");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1853 _gtk_moz_embed_new = dlsym(handle, "gtk_moz_embed_new");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1854 _gtk_moz_embed_can_go_back = dlsym(handle, "gtk_moz_embed_can_go_back");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1855 _gtk_moz_embed_can_go_forward = dlsym(handle, "gtk_moz_embed_can_go_forward");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1856 _gtk_moz_embed_set_comp_path = dlsym(handle, "gtk_moz_embed_set_comp_path");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1857 _gtk_moz_embed_set_profile_path = dlsym(handle, "gtk_moz_embed_set_profile_path");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1858 _gtk_moz_embed_push_startup = dlsym(handle, "gtk_moz_embed_push_startup");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1859 _gtk_moz_embed_set_comp_path( "/usr/lib/mozilla");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1860 _gtk_moz_embed_set_comp_path( "/usr/lib/firefox");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1861 profile = g_build_filename(g_get_home_dir(), ".dwindows/mozilla", NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1862
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1863 /* initialize profile */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1864 _gtk_moz_embed_set_profile_path(profile, "dwindows");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1865 g_free(profile);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1866
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1867 /* startup done */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1868 _gtk_moz_embed_push_startup();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1869 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1870 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1871 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1872
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1873 /* Try to load the libgtkhtml2 shared libary */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1874 #ifdef USE_LIBGTKHTML2
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1875 #include <ctype.h>
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1876
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1877 void init_libgtkhtml2 (void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1878 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1879 void *handle = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1880 handle = dlopen( "libgtkhtml-2.so", RTLD_LAZY );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1881
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1882 /* If we loaded it, grab the symbols we want */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1883 if ( handle )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1884 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1885 _html_document_new = dlsym(handle, "html_document_new");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1886 _html_view_new = dlsym(handle, "html_view_new");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1887 //...
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1888 _gtk_html_context_get = dlsym(handle, "gtk_html_context_get" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1889 g_object_set( G_OBJECT(_gtk_html_context_get()), "debug_painting", FALSE, NULL );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1890 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1891 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1892 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1893
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1894 /* Try to load the WebKitGtk shared libary */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1895 #ifdef USE_WEBKIT
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1896 void init_webkit(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1897 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1898 char libname[100];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1899 void *handle = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1900
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1901 sprintf( libname, "lib%s.so", WEBKIT_LIB);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1902 handle = dlopen( libname, RTLD_LAZY );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1903
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1904 /* If we loaded it, grab the symbols we want */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1905 if ( handle )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1906 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1907 _webkit_web_view_get_type = dlsym( handle, "webkit_web_view_get_type" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1908 _webkit_web_view_load_html_string = dlsym( handle, "webkit_web_view_load_html_string" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1909 _webkit_web_view_open = dlsym( handle, "webkit_web_view_open" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1910 _webkit_web_view_new = dlsym( handle, "webkit_web_view_new" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1911 _webkit_web_view_go_back = dlsym( handle, "webkit_web_view_go_back" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1912 _webkit_web_view_go_forward = dlsym( handle, "webkit_web_view_go_forward" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1913 _webkit_web_view_reload = dlsym( handle, "webkit_web_view_reload" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1914 _webkit_web_view_stop_loading = dlsym( handle, "webkit_web_view_stop_loading" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1915 # ifdef WEBKIT_CHECK_VERSION
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1916 # if WEBKIT_CHECK_VERSION(1,1,5)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1917 _webkit_web_frame_print = dlsym( handle, "webkit_web_frame_print" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1918 _webkit_web_view_get_focused_frame = dlsym( handle, "webkit_web_view_get_focused_frame" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1919 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1920 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1921 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1922 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1923 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1924
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1925 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1926 * Initializes the Dynamic Windows engine.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1927 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1928 * newthread: True if this is the only thread.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1929 * False if there is already a message loop running.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1930 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1931 int dw_int_init(DWResources *res, int newthread, int *argc, char **argv[])
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1932 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1933 char *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1934 char *fname;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1935
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1936 if(res)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1937 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1938 _resources.resource_max = res->resource_max;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1939 _resources.resource_id = res->resource_id;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1940 _resources.resource_data = res->resource_data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1941 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1942 g_thread_init(NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1943 gdk_threads_init();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1944
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1945 gtk_init(argc, argv);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1946
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1947 tmp = getenv("DW_BORDER_WIDTH");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1948 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1949 _dw_border_width = atoi(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1950 tmp = getenv("DW_BORDER_HEIGHT");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1951 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1952 _dw_border_height = atoi(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1953
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1954 pthread_key_create(&_dw_fg_color_key, NULL);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1955 pthread_key_create(&_dw_bg_color_key, NULL);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1956 pthread_key_create(&_dw_mutex_key, NULL);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1957
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1958 _init_thread();
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1959
874
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
1960 /* Create a global object for glib activities */
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
1961 _DWObject = g_object_new(G_TYPE_OBJECT, NULL);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1962
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1963 gtk_rc_parse_string("style \"gtk-tooltips-style\" { bg[NORMAL] = \"#eeee00\" } widget \"gtk-tooltips\" style \"gtk-tooltips-style\"");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1964
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1965 #ifdef USE_GTKMOZEMBED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1966 init_mozembed();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1967 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1968
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1969 #ifdef USE_LIBGTKHTML2
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1970 init_libgtkhtml2();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1971 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1972
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1973 #ifdef USE_WEBKIT
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1974 init_webkit();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1975 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1976 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1977 * Setup logging/debugging
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1978 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1979 if ( (fname = getenv( "DWINDOWS_DEBUGFILE" ) ) != NULL )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1980 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1981 dbgfp = fopen( fname, "w" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1982 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1983
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1984 return TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1985 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1986
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1987 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1988 * Runs a message loop for Dynamic Windows.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1989 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1990 void dw_main(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1991 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1992 gdk_threads_enter();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1993 _dw_thread = pthread_self();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1994 gtk_main();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1995 _dw_thread = (pthread_t)-1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1996 gdk_threads_leave();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1997 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1998
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1999 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2000 * Runs a message loop for Dynamic Windows, for a period of milliseconds.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2001 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2002 * milliseconds: Number of milliseconds to run the loop for.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2003 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2004 void dw_main_sleep(int milliseconds)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2005 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2006 struct timeval tv, start;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2007 pthread_t curr = pthread_self();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2008
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2009 gettimeofday(&start, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2010
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2011 if(_dw_thread == (pthread_t)-1 || _dw_thread == curr)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2012 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2013 pthread_t orig = _dw_thread;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2014
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2015 gettimeofday(&tv, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2016
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2017 while(((tv.tv_sec - start.tv_sec)*1000) + ((tv.tv_usec - start.tv_usec)/1000) <= milliseconds)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2018 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2019 if(orig == (pthread_t)-1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2020 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2021 gdk_threads_enter();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2022 _dw_thread = curr;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2023 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2024 if(gtk_events_pending())
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2025 gtk_main_iteration();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2026 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2027 _dw_msleep(1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2028 if(orig == (pthread_t)-1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2029 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2030 _dw_thread = orig;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2031 gdk_threads_leave();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2032 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2033 gettimeofday(&tv, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2034 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2035 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2036 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2037 _dw_msleep(milliseconds);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2038 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2039
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2040 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2041 * Processes a single message iteration and returns.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2042 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2043 void dw_main_iteration(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2044 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2045 gdk_threads_enter();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2046 _dw_thread = pthread_self();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2047 gtk_main_iteration();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2048 _dw_thread = (pthread_t)-1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2049 gdk_threads_leave();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2050 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2051
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2052 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2053 * Free's memory allocated by dynamic windows.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2054 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2055 * ptr: Pointer to dynamic windows allocated
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2056 * memory to be free()'d.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2057 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2058 void dw_free(void *ptr)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2059 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2060 free(ptr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2061 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2062
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2063 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2064 * Allocates and initializes a dialog struct.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2065 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2066 * data: User defined data to be passed to functions.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2067 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2068 DWDialog *dw_dialog_new(void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2069 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2070 DWDialog *tmp = malloc(sizeof(DWDialog));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2071
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2072 if ( tmp )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2073 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2074 tmp->eve = dw_event_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2075 dw_event_reset(tmp->eve);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2076 tmp->data = data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2077 tmp->done = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2078 tmp->method = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2079 tmp->result = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2080 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2081 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2082 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2083
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2084 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2085 * Accepts a dialog struct and returns the given data to the
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2086 * initial called of dw_dialog_wait().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2087 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2088 * dialog: Pointer to a dialog struct aquired by dw_dialog_new).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2089 * result: Data to be returned by dw_dialog_wait().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2090 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2091 int dw_dialog_dismiss(DWDialog *dialog, void *result)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2092 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2093 dialog->result = result;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2094 if(dialog->method)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2095 gtk_main_quit();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2096 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2097 dw_event_post(dialog->eve);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2098 dialog->done = TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2099 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2100 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2101
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2102 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2103 * Accepts a dialog struct waits for dw_dialog_dismiss() to be
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2104 * called by a signal handler with the given dialog struct.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2105 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2106 * dialog: Pointer to a dialog struct aquired by dw_dialog_new).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2107 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2108 void *dw_dialog_wait(DWDialog *dialog)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2109 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2110 void *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2111 int newprocess = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2112
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2113 /* _dw_thread will be -1 if dw_main hasn't been run yet. */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2114 if(_dw_thread == (pthread_t)-1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2115 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2116 _dw_thread = pthread_self();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2117 newprocess = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2118 gdk_threads_enter();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2119 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2120
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2121 if(pthread_self() == _dw_thread)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2122 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2123 dialog->method = TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2124 gtk_main();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2125 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2126 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2127 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2128 dialog->method = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2129 dw_event_wait(dialog->eve, -1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2130 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2131
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2132 if(newprocess)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2133 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2134 _dw_thread = (pthread_t)-1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2135 gdk_threads_leave();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2136 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2137
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2138 dw_event_close(&dialog->eve);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2139 tmp = dialog->result;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2140 free(dialog);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2141 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2142 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2143
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2144 static int _dw_ok_func(HWND window, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2145 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2146 DWDialog *dwwait = (DWDialog *)data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2147
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2148 if(!dwwait)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2149 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2150
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2151 dw_window_destroy((HWND)dwwait->data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2152 dw_dialog_dismiss((DWDialog *)data, (void *)DW_MB_RETURN_OK);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2153 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2154 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2155
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2156 int _dw_yes_func(HWND window, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2157 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2158 DWDialog *dwwait = (DWDialog *)data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2159
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2160 if(!dwwait)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2161 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2162
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2163 dw_window_destroy((HWND)dwwait->data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2164 dw_dialog_dismiss((DWDialog *)data, (void *)DW_MB_RETURN_YES);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2165 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2166 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2167
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2168 int _dw_no_func(HWND window, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2169 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2170 DWDialog *dwwait = (DWDialog *)data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2171
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2172 if(!dwwait)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2173 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2174
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2175 dw_window_destroy((HWND)dwwait->data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2176 dw_dialog_dismiss((DWDialog *)data, (void *)DW_MB_RETURN_NO);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2177 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2178 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2179
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2180 int _dw_cancel_func(HWND window, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2181 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2182 DWDialog *dwwait = (DWDialog *)data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2183
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2184 if(!dwwait)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2185 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2186
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2187 dw_window_destroy((HWND)dwwait->data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2188 dw_dialog_dismiss((DWDialog *)data, (void *)DW_MB_RETURN_CANCEL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2189 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2190 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2191
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2192 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2193 * Displays a Message Box with given text and title..
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2194 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2195 * title: The title of the message box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2196 * flags: Defines buttons and icons to display
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2197 * format: printf style format string.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2198 * ...: Additional variables for use in the format.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2199 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2200 int dw_messagebox(char *title, int flags, char *format, ...)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2201 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2202 HWND entrywindow, texttargetbox, imagetextbox, mainbox, okbutton, nobutton, yesbutton, cancelbutton, buttonbox, stext;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2203 ULONG flStyle = DW_FCF_TITLEBAR | DW_FCF_SHELLPOSITION | DW_FCF_SIZEBORDER;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2204 DWDialog *dwwait;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2205 va_list args;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2206 char outbuf[1000];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2207 char **xpm_data = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2208 int x, y, extra_width=0,text_width,text_height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2209 int width,height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2210
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2211 va_start(args, format);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2212 vsnprintf(outbuf, 999, format, args);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2213 va_end(args);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2214
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2215 entrywindow = dw_window_new(HWND_DESKTOP, title, flStyle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2216 mainbox = dw_box_new(DW_VERT, 10);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2217 dw_box_pack_start(entrywindow, mainbox, 0, 0, TRUE, TRUE, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2218
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2219 /* determine if an icon is to be used - if so we need another HORZ box */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2220 if((flags & DW_MB_ERROR) | (flags & DW_MB_WARNING) | (flags & DW_MB_INFORMATION) | (flags & DW_MB_QUESTION))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2221 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2222 imagetextbox = dw_box_new(DW_HORZ, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2223 dw_box_pack_start(mainbox, imagetextbox, 0, 0, TRUE, TRUE, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2224 texttargetbox = imagetextbox;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2225 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2226 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2227 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2228 imagetextbox = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2229 texttargetbox = mainbox;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2230 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2231
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2232 if(flags & DW_MB_ERROR)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2233 xpm_data = (char **)_dw_messagebox_error;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2234 else if(flags & DW_MB_WARNING)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2235 xpm_data = (char **)_dw_messagebox_warning;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2236 else if(flags & DW_MB_INFORMATION)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2237 xpm_data = (char **)_dw_messagebox_information;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2238 else if(flags & DW_MB_QUESTION)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2239 xpm_data = (char **)_dw_messagebox_question;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2240
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2241 if(xpm_data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2242 extra_width = 32;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2243
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2244 if(texttargetbox == imagetextbox)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2245 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2246 HWND handle = dw_bitmap_new( 100 );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2247 GdkPixbuf *icon_pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)xpm_data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2248
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2249 gtk_image_set_from_pixbuf(GTK_IMAGE(handle), icon_pixbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2250
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2251 dw_box_pack_start( texttargetbox, handle, 32, 32, FALSE, FALSE, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2252 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2253
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2254 /* Create text */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2255 text_width = 240;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2256 text_height = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2257 stext = dw_text_new(outbuf, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2258 dw_window_set_style(stext, DW_DT_WORDBREAK, DW_DT_WORDBREAK);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2259 dw_font_text_extents_get(stext, NULL, outbuf, &width, &height);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2260
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
2261 text_width = min( width, dw_screen_width() - extra_width - 100 );
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
2262 text_height = min( height, dw_screen_height() );
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2263
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2264 dw_box_pack_start(texttargetbox, stext, text_width, text_height, TRUE, TRUE, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2265
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2266 /* Buttons */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2267 buttonbox = dw_box_new(DW_HORZ, 10);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2268
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2269 dw_box_pack_start(mainbox, buttonbox, 0, 0, TRUE, FALSE, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2270
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2271 dwwait = dw_dialog_new((void *)entrywindow);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2272
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2273 /* which buttons ? */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2274 if(flags & DW_MB_OK)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2275 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2276 okbutton = dw_button_new("Ok", 1001L);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2277 dw_box_pack_start(buttonbox, okbutton, 50, 30, TRUE, FALSE, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2278 dw_signal_connect(okbutton, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_ok_func), (void *)dwwait);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2279 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2280 else if(flags & DW_MB_OKCANCEL)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2281 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2282 okbutton = dw_button_new("Ok", 1001L);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2283 dw_box_pack_start(buttonbox, okbutton, 50, 30, TRUE, FALSE, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2284 dw_signal_connect(okbutton, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_ok_func), (void *)dwwait);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2285 cancelbutton = dw_button_new("Cancel", 1002L);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2286 dw_box_pack_start(buttonbox, cancelbutton, 50, 30, TRUE, FALSE, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2287 dw_signal_connect(cancelbutton, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_cancel_func), (void *)dwwait);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2288 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2289 else if(flags & DW_MB_YESNO)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2290 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2291 yesbutton = dw_button_new("Yes", 1001L);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2292 dw_box_pack_start(buttonbox, yesbutton, 50, 30, TRUE, FALSE, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2293 dw_signal_connect(yesbutton, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_yes_func), (void *)dwwait);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2294 nobutton = dw_button_new("No", 1002L);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2295 dw_box_pack_start(buttonbox, nobutton, 50, 30, TRUE, FALSE, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2296 dw_signal_connect(nobutton, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_no_func), (void *)dwwait);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2297 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2298 else if(flags & DW_MB_YESNOCANCEL)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2299 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2300 yesbutton = dw_button_new("Yes", 1001L);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2301 dw_box_pack_start(buttonbox, yesbutton, 50, 30, TRUE, FALSE, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2302 dw_signal_connect(yesbutton, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_yes_func), (void *)dwwait);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2303 nobutton = dw_button_new("No", 1002L);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2304 dw_box_pack_start(buttonbox, nobutton, 50, 30, TRUE, FALSE, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2305 dw_signal_connect(nobutton, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_no_func), (void *)dwwait);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2306 cancelbutton = dw_button_new("Cancel", 1003L);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2307 dw_box_pack_start(buttonbox, cancelbutton, 50, 30, TRUE, FALSE, 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2308 dw_signal_connect(cancelbutton, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_cancel_func), (void *)dwwait);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2309 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2310
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2311 height = max(50,text_height)+100;
1121
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
2312 x = (dw_screen_width() - (text_width+60+extra_width))/2;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2313 y = (dw_screen_height() - height)/2;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2314
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2315 dw_window_set_pos_size(entrywindow, x, y, (text_width+60+extra_width), height);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2316
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2317 dw_window_show(entrywindow);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2318
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
2319 return GPOINTER_TO_INT(dw_dialog_wait(dwwait));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2320 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2321
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2322 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2323 * Minimizes or Iconifies a top-level window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2324 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2325 * handle: The window handle to minimize.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2326 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2327 int dw_window_minimize(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2328 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2329 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2330 GtkWidget *mdi = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2331
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2332 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2333 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2334
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2335 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2336 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2337 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2338 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_ICONIFIED);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2339 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2340 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2341 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2342 gtk_window_iconify( GTK_WINDOW(handle) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2343 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2344 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2345 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2346 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2347
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2348 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2349 * Makes the window topmost.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2350 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2351 * handle: The window handle to make topmost.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2352 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2353 int dw_window_raise(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2354 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2355 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2356
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2357 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2358 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2359
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2360 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2361 gdk_window_raise(gtk_widget_get_window(GTK_WIDGET(handle)));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2362 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2363 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2364 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2365
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2366 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2367 * Makes the window bottommost.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2368 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2369 * handle: The window handle to make bottommost.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2370 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2371 int dw_window_lower(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2372 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2373 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2374
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2375 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2376 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2377
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2378 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2379 gdk_window_lower(gtk_widget_get_window(GTK_WIDGET(handle)));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2380 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2381 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2382 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2383
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2384 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2385 * Makes the window visible.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2386 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2387 * handle: The window handle to make visible.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2388 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2389 int dw_window_show(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2390 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2391 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2392 GtkWidget *defaultitem;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2393 GtkWidget *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2394
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2395 if (!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2396 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2397
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2398 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2399 gtk_widget_show(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2400 if ((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2401 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2402 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_NORMAL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2403 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2404 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2405 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2406 if (gtk_widget_get_window(GTK_WIDGET(handle)))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2407 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
2408 int width = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_width"));
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
2409 int height = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_height"));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2410
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2411 if (width && height)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2412 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2413 gtk_widget_set_size_request(handle, width, height);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2414 g_object_set_data(G_OBJECT(handle), "_dw_width", GINT_TO_POINTER(0));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2415 g_object_set_data(G_OBJECT(handle), "_dw_height", GINT_TO_POINTER(0));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2416 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2417
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2418 gdk_window_raise(gtk_widget_get_window(GTK_WIDGET(handle)));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2419 gdk_flush();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2420 gdk_window_show(gtk_widget_get_window(GTK_WIDGET(handle)));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2421 gdk_flush();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2422 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2423 defaultitem = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_defaultitem");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2424 if (defaultitem)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2425 gtk_widget_grab_focus(defaultitem);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2426 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2427 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2428 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2429 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2430
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2431 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2432 * Makes the window invisible.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2433 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2434 * handle: The window handle to make visible.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2435 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2436 int dw_window_hide(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2437 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2438 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2439 GtkWidget *mdi = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2440
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2441 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2442 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2443
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2444 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2445 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2446 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2447 gtk_mdi_set_state(GTK_MDI(mdi), handle, CHILD_ICONIFIED);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2448 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2449 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2450 gtk_widget_hide(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2451 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2452 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2453 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2454
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2455 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2456 * Destroys a window and all of it's children.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2457 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2458 * handle: The window handle to destroy.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2459 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2460 int dw_window_destroy(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2461 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2462 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2463 GtkWidget *mdi = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2464
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2465 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2466 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2467
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2468 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2469 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2470 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2471 gtk_mdi_remove(GTK_MDI(mdi), handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2472 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2473 if(GTK_IS_WIDGET(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2474 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2475 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_eventbox");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2476
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2477 if(eventbox && GTK_IS_WIDGET(eventbox))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2478 gtk_widget_destroy(eventbox);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2479 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2480 gtk_widget_destroy(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2481 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2482 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2483 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2484 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2485
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2486 /* Causes entire window to be invalidated and redrawn.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2487 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2488 * handle: Toplevel window handle to be redrawn.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2489 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2490 void dw_window_redraw(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2491 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2492 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2493
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2494 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2495 * Changes a window's parent to newparent.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2496 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2497 * handle: The window handle to destroy.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2498 * newparent: The window's new parent window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2499 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2500 void dw_window_reparent(HWND handle, HWND newparent)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2501 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2502 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2503
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2504 DW_MUTEX_LOCK;
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
2505 gdk_window_reparent(gtk_widget_get_window(GTK_WIDGET(handle)), newparent ? gtk_widget_get_window(GTK_WIDGET(newparent)) : gdk_get_default_root_window(), 0, 0);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2506 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2507 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2508
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2509 /*
1076
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2510 * Sets the default font used on text based widgets.
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2511 * Parameters:
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2512 * fontname: Font name in Dynamic Windows format.
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2513 */
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2514 void API dw_font_set_default(char *fontname)
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2515 {
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2516 }
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2517
1240
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2518 /* Convert DW style font to pango style */
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2519 void _convert_font(char *font)
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2520 {
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2521 char *name = strchr(font, '.');
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2522
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2523 /* Detect Dynamic Windows style font name...
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2524 * Format: ##.Fontname
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2525 * and convert to a Pango name
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2526 */
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2527 if(name && isdigit(*font))
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2528 {
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2529 int size = atoi(font);
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2530 *name = 0;
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2531 name++;
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2532 sprintf(font, "%s %d", name, size);
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2533 }
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2534 }
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2535
1076
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2536 /*
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2537 * Sets the font used by a specified window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2538 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2539 * handle: The window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2540 * fontname: Name and size of the font in the form "size.fontname"
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2541 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2542 int dw_window_set_font(HWND handle, char *fontname)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2543 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2544 PangoFontDescription *pfont;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2545 GtkWidget *handle2 = handle;
1001
4ef0e878fe06 Added support for Dynamic Windows style font names for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 998
diff changeset
2546 char *font = strdup(fontname);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2547 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2548 gpointer data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2549
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2550 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2551 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2552 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2553 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2554 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2555 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2556 }
1038
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2557 /* If it is a groupox we want to operate on the frame label */
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2558 else if(GTK_IS_FRAME(handle))
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2559 {
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2560 GtkWidget *tmp = gtk_frame_get_label_widget(GTK_FRAME(handle));
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2561 if(tmp)
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2562 handle2 = tmp;
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2563 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2564
1240
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2565 _convert_font(font);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2566
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2567 /* Free old font name if one is allocated */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2568 data = g_object_get_data(G_OBJECT(handle2), "_dw_fontname");
1240
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
2569 g_object_set_data(G_OBJECT(handle2), "_dw_fontname", (gpointer)font);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2570 if(data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2571 free(data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2572
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2573 pfont = pango_font_description_from_string(fontname);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2574
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2575 if(pfont)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2576 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2577 gtk_widget_modify_font(handle2, pfont);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2578 pango_font_description_free(pfont);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2579 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2580 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2581 return TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2582 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2583
1053
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2584 static int _dw_font_active = 0;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2585
1054
818698b4a0df Added dw_font_choose() on GTK2 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1053
diff changeset
2586 /* Internal function to handle the font OK press */
1053
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2587 static gint _gtk_font_ok(GtkWidget *widget, DWDialog *dwwait)
1052
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2588 {
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2589 GtkFontSelectionDialog *fd;
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2590 char *retfont = NULL;
1053
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2591 gchar *fontname;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2592 int len, x;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2593
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2594 if(!dwwait)
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2595 return FALSE;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2596
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2597 fd = dwwait->data;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2598 fontname = gtk_font_selection_dialog_get_font_name(fd);
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2599 if(fontname && (retfont = strdup(fontname)))
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2600 {
1052
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2601 len = strlen(fontname);
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2602 /* Convert to Dynamic Windows format if we can... */
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2603 if(len > 0 && isdigit(fontname[len-1]))
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2604 {
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2605 int size;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2606
1052
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2607 x=len-1;
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2608 while(x > 0 && fontname[x] != ' ')
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2609 {
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2610 x--;
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2611 }
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2612 size = atoi(&fontname[x]);
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2613 /* If we were able to find a valid size... */
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2614 if(size > 0)
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2615 {
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2616 /* Null terminate after the name...
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2617 * and create the Dynamic Windows style font.
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2618 */
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2619 fontname[x] = 0;
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2620 snprintf(retfont, len+1, "%d.%s", size, fontname);
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2621 }
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2622 }
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2623 dw_free(fontname);
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2624 }
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2625 gtk_widget_destroy(GTK_WIDGET(fd));
1054
818698b4a0df Added dw_font_choose() on GTK2 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1053
diff changeset
2626 _dw_font_active = 0;
1053
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2627 dw_dialog_dismiss(dwwait, (void *)retfont);
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2628 return FALSE;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2629 }
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2630
1054
818698b4a0df Added dw_font_choose() on GTK2 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1053
diff changeset
2631 /* Internal function to handle the font Cancel press */
1053
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2632 static gint _gtk_font_cancel(GtkWidget *widget, DWDialog *dwwait)
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2633 {
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2634 if(!dwwait)
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2635 return FALSE;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2636
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2637 gtk_widget_destroy(GTK_WIDGET(dwwait->data));
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2638 _dw_font_active = 0;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2639 dw_dialog_dismiss(dwwait, NULL);
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2640 return FALSE;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2641 }
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2642
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2643 /* Allows the user to choose a font using the system's font chooser dialog.
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2644 * Parameters:
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2645 * currfont: current font
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2646 * Returns:
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2647 * A malloced buffer with the selected font or NULL on error.
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2648 */
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2649 char * API dw_font_choose(char *currfont)
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2650 {
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2651 GtkFontSelectionDialog *fd;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2652 GtkWidget *ok_button, *cancel_button;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2653 char *font = currfont ? strdup(currfont) : NULL;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2654 char *name = font ? strchr(font, '.') : NULL;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2655 int _locked_by_me = FALSE;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2656 char *retfont = NULL;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2657 DWDialog *dwwait;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2658
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2659 /* Detect Dynamic Windows style font name...
1053
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2660 * Format: ##.Fontname
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2661 * and convert to a Pango name
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2662 */
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2663 if(name && isdigit(*font))
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2664 {
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2665 int size = atoi(font);
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2666 *name = 0;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2667 name++;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2668 sprintf(font, "%s %d", name, size);
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2669 }
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2670
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2671 DW_MUTEX_LOCK;
1054
818698b4a0df Added dw_font_choose() on GTK2 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1053
diff changeset
2672 /* The DW mutex should be sufficient for
818698b4a0df Added dw_font_choose() on GTK2 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1053
diff changeset
2673 * insuring no thread changes this unknowingly.
818698b4a0df Added dw_font_choose() on GTK2 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1053
diff changeset
2674 */
818698b4a0df Added dw_font_choose() on GTK2 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1053
diff changeset
2675 if(_dw_font_active)
818698b4a0df Added dw_font_choose() on GTK2 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1053
diff changeset
2676 {
818698b4a0df Added dw_font_choose() on GTK2 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1053
diff changeset
2677 DW_MUTEX_UNLOCK;
1057
0cd0089ee17d Fix issue with using/freeing the wrong variable in GTK3 font chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1054
diff changeset
2678 if(font)
0cd0089ee17d Fix issue with using/freeing the wrong variable in GTK3 font chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1054
diff changeset
2679 free(font);
1054
818698b4a0df Added dw_font_choose() on GTK2 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1053
diff changeset
2680 return NULL;
818698b4a0df Added dw_font_choose() on GTK2 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1053
diff changeset
2681 }
1053
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2682 fd = (GtkFontSelectionDialog *)gtk_font_selection_dialog_new("Choose font");
1057
0cd0089ee17d Fix issue with using/freeing the wrong variable in GTK3 font chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1054
diff changeset
2683 if(font)
0cd0089ee17d Fix issue with using/freeing the wrong variable in GTK3 font chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1054
diff changeset
2684 {
0cd0089ee17d Fix issue with using/freeing the wrong variable in GTK3 font chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1054
diff changeset
2685 gtk_font_selection_dialog_set_font_name(fd, font);
0cd0089ee17d Fix issue with using/freeing the wrong variable in GTK3 font chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1054
diff changeset
2686 free(font);
1053
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2687 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2688
1053
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2689 _dw_font_active = 1;
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2690
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2691 dwwait = dw_dialog_new((void *)fd);
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2692
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2693 ok_button = gtk_font_selection_dialog_get_ok_button(fd);
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2694 cancel_button = gtk_font_selection_dialog_get_cancel_button(fd);
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2695 g_signal_connect(G_OBJECT(ok_button), "clicked", G_CALLBACK(_gtk_font_ok), dwwait);
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2696 g_signal_connect(G_OBJECT(cancel_button), "clicked", G_CALLBACK(_gtk_font_cancel), dwwait);
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2697
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2698 gtk_widget_show(GTK_WIDGET(fd));
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2699
0725114533fe Changes to the GTK3 font chooser... this version doesn't block the rest of the app.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1052
diff changeset
2700 retfont = (char *)dw_dialog_wait(dwwait);
1052
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2701 DW_MUTEX_UNLOCK;
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2702 return retfont;
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2703 }
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2704
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2705 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2706 * Gets the font used by a specified window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2707 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2708 * handle: The window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2709 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2710 char *dw_window_get_font(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2711 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2712 PangoFontDescription *pfont;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2713 PangoContext *pcontext;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2714 GtkWidget *handle2 = handle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2715 char *font;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2716 char *retfont=NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2717 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2718
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2719 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2720 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2721 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2722 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2723 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2724 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2725 }
1038
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2726 /* If it is a groupox we want to operate on the frame label */
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2727 else if(GTK_IS_FRAME(handle))
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2728 {
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2729 GtkWidget *tmp = gtk_frame_get_label_widget(GTK_FRAME(handle));
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2730 if(tmp)
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2731 handle2 = tmp;
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2732 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2733
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2734 pcontext = gtk_widget_get_pango_context( handle2 );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2735 if ( pcontext )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2736 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2737 pfont = pango_context_get_font_description( pcontext );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2738 if ( pfont )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2739 {
1038
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2740 int len, x;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2741
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2742 font = pango_font_description_to_string( pfont );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2743 retfont = strdup(font);
1038
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2744 len = strlen(font);
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2745 /* Convert to Dynamic Windows format if we can... */
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2746 if(len > 0 && isdigit(font[len-1]))
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2747 {
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2748 int size;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2749
1038
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2750 x=len-1;
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2751 while(x > 0 && font[x] != ' ')
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2752 {
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2753 x--;
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2754 }
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2755 size = atoi(&font[x]);
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2756 /* If we were able to find a valid size... */
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2757 if(size > 0)
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2758 {
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2759 /* Null terminate after the name...
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2760 * and create the Dynamic Windows style font.
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2761 */
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2762 font[x] = 0;
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2763 snprintf(retfont, len+1, "%d.%s", size, font);
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2764 }
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
2765 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2766 g_free( font );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2767 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2768 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2769 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2770 return retfont;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2771 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2772
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2773 void _free_gdk_colors(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2774 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2775 GdkColor *old = (GdkColor *)g_object_get_data(G_OBJECT(handle), "_dw_foregdk");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2776
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2777 if(old)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2778 free(old);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2779
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2780 old = (GdkColor *)g_object_get_data(G_OBJECT(handle), "_dw_backgdk");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2781
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2782 if(old)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2783 free(old);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2784 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2785
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2786 /* Free old color pointers and allocate new ones */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2787 static void _save_gdk_colors(HWND handle, GdkColor fore, GdkColor back)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2788 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2789 GdkColor *foregdk = malloc(sizeof(GdkColor));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2790 GdkColor *backgdk = malloc(sizeof(GdkColor));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2791
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2792 _free_gdk_colors(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2793
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2794 *foregdk = fore;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2795 *backgdk = back;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2796
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2797 g_object_set_data(G_OBJECT(handle), "_dw_foregdk", (gpointer)foregdk);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2798 g_object_set_data(G_OBJECT(handle), "_dw_backgdk", (gpointer)backgdk);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2799 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2800
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2801 static int _set_color(HWND handle, unsigned long fore, unsigned long back)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2802 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2803 /* Remember that each color component in X11 use 16 bit no matter
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2804 * what the destination display supports. (and thus GDK)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2805 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2806 GdkColor forecolor, backcolor;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2807
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2808 if(fore & DW_RGB_COLOR)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2809 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2810 forecolor.pixel = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2811 forecolor.red = DW_RED_VALUE(fore) << 8;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2812 forecolor.green = DW_GREEN_VALUE(fore) << 8;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2813 forecolor.blue = DW_BLUE_VALUE(fore) << 8;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2814
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2815 gtk_widget_modify_text(handle, 0, &forecolor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2816 gtk_widget_modify_text(handle, 1, &forecolor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2817 gtk_widget_modify_fg(handle, 0, &forecolor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2818 gtk_widget_modify_fg(handle, 1, &forecolor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2819 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2820 else if(fore != DW_CLR_DEFAULT)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2821 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2822 forecolor = _colors[fore];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2823
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2824 gtk_widget_modify_text(handle, 0, &_colors[fore]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2825 gtk_widget_modify_text(handle, 1, &_colors[fore]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2826 gtk_widget_modify_fg(handle, 0, &_colors[fore]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2827 gtk_widget_modify_fg(handle, 1, &_colors[fore]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2828 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2829 if(back & DW_RGB_COLOR)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2830 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2831 backcolor.pixel = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2832 backcolor.red = DW_RED_VALUE(back) << 8;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2833 backcolor.green = DW_GREEN_VALUE(back) << 8;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2834 backcolor.blue = DW_BLUE_VALUE(back) << 8;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2835
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2836 gtk_widget_modify_base(handle, 0, &backcolor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2837 gtk_widget_modify_base(handle, 1, &backcolor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2838 gtk_widget_modify_bg(handle, 0, &backcolor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2839 gtk_widget_modify_bg(handle, 1, &backcolor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2840 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2841 else if(back != DW_CLR_DEFAULT)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2842 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2843 backcolor = _colors[back];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2844
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2845 gtk_widget_modify_base(handle, 0, &_colors[back]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2846 gtk_widget_modify_base(handle, 1, &_colors[back]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2847 gtk_widget_modify_bg(handle, 0, &_colors[back]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2848 gtk_widget_modify_bg(handle, 1, &_colors[back]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2849 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2850
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2851 _save_gdk_colors(handle, forecolor, backcolor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2852
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2853 return TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2854 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2855 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2856 * Sets the colors used by a specified window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2857 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2858 * handle: The window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2859 * fore: Foreground color in RGB format.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2860 * back: Background color in RGB format.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2861 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2862 int dw_window_set_color(HWND handle, unsigned long fore, unsigned long back)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2863 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2864 GtkWidget *handle2 = handle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2865 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2866
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2867 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2868
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2869 if(GTK_IS_SCROLLED_WINDOW(handle) || GTK_IS_BOX(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2870 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2871 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2872 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2873 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2874 }
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
2875 else if(GTK_IS_GRID(handle))
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2876 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2877 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_eventbox");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2878 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2879 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2880 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2881
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2882 _set_color(handle2, fore, back);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2883
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2884 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2885 return TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2886 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2887
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2888 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2889 * Sets the font used by a specified window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2890 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2891 * handle: The window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2892 * border: Size of the window border in pixels.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2893 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2894 int dw_window_set_border(HWND handle, int border)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2895 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2896 /* TODO */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2897 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2898 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2899
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2900 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2901 * Captures the mouse input to this window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2902 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2903 * handle: Handle to receive mouse input.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2904 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2905 void dw_window_capture(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2906 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2907 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2908
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2909 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2910 gdk_pointer_grab(gtk_widget_get_window(handle), TRUE, GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK, NULL, NULL, GDK_CURRENT_TIME);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2911 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2912 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2913
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2914 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2915 * Changes the appearance of the mouse pointer.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2916 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2917 * handle: Handle to widget for which to change.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2918 * cursortype: ID of the pointer you want.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2919 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2920 void dw_window_set_pointer(HWND handle, int pointertype)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2921 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2922 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2923 GdkCursor *cursor;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2924
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2925 DW_MUTEX_LOCK;
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
2926 if(pointertype > 65535)
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
2927 {
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
2928 GdkPixbuf *pixbuf = _find_pixbuf(GINT_TO_POINTER(pointertype), NULL, NULL);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2929 cursor = gdk_cursor_new_from_pixbuf(gdk_display_get_default(), pixbuf, 8, 8);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2930 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2931 else if(!pointertype)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2932 cursor = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2933 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2934 cursor = gdk_cursor_new(pointertype);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2935 if(handle && gtk_widget_get_window(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2936 gdk_window_set_cursor(gtk_widget_get_window(handle), cursor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2937 if(cursor)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2938 gdk_cursor_unref(cursor);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2939 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2940 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2941
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2942 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2943 * Releases previous mouse capture.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2944 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2945 void dw_window_release(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2946 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2947 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2948
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2949 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2950 gdk_pointer_ungrab(GDK_CURRENT_TIME);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2951 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2952 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2953
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2954 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2955 * Create a new Window Frame.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2956 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2957 * owner: The Owner's window handle or HWND_DESKTOP.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2958 * title: The Window title.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2959 * flStyle: Style flags, see the PM reference.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2960 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2961 HWND dw_window_new(HWND hwndOwner, char *title, unsigned long flStyle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2962 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2963 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2964 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2965 int flags = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2966
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2967 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2968 if(hwndOwner && GTK_IS_MDI(hwndOwner))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2969 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2970 GtkWidget *label;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2971
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2972 tmp = dw_box_new(DW_VERT, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2973
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2974 label = gtk_label_new(title);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2975 gtk_widget_show(label);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2976 g_object_set_data(G_OBJECT(tmp), "_dw_mdi_child", GINT_TO_POINTER(1));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2977 g_object_set_data(G_OBJECT(tmp), "_dw_mdi_title", (gpointer)label);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2978 g_object_set_data(G_OBJECT(tmp), "_dw_mdi", (gpointer)hwndOwner);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2979
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2980 gtk_mdi_put(GTK_MDI(hwndOwner), tmp, 100, 75, label);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2981 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2982 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2983 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2984 last_window = tmp = gtk_window_new(GTK_WINDOW_TOPLEVEL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2985
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2986 gtk_window_set_title(GTK_WINDOW(tmp), title);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2987 if(!(flStyle & DW_FCF_SIZEBORDER))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2988 gtk_window_set_resizable(GTK_WINDOW(tmp), FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2989
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2990 gtk_widget_realize(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2991
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2992 if(flStyle & DW_FCF_TITLEBAR)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2993 flags |= GDK_DECOR_TITLE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2994
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2995 if(flStyle & DW_FCF_MINMAX)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2996 flags |= GDK_DECOR_MINIMIZE | GDK_DECOR_MAXIMIZE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2997
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2998 if(flStyle & DW_FCF_SIZEBORDER)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2999 flags |= GDK_DECOR_RESIZEH | GDK_DECOR_BORDER;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3000
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3001 if(flStyle & DW_FCF_BORDER || flStyle & DW_FCF_DLGBORDER)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3002 flags |= GDK_DECOR_BORDER;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3003
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3004 if(flStyle & DW_FCF_MAXIMIZE)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3005 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3006 flags &= ~DW_FCF_MAXIMIZE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3007 gtk_window_maximize(GTK_WINDOW(tmp));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3008 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3009 if(flStyle & DW_FCF_MINIMIZE)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3010 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3011 flags &= ~DW_FCF_MINIMIZE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3012 gtk_window_iconify(GTK_WINDOW(tmp));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3013 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3014
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3015 gdk_window_set_decorations(gtk_widget_get_window(tmp), flags);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3016
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3017 if(hwndOwner)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3018 gdk_window_reparent(gtk_widget_get_window(GTK_WIDGET(tmp)), gtk_widget_get_window(GTK_WIDGET(hwndOwner)), 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3019
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3020 if(flStyle & DW_FCF_SIZEBORDER)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3021 g_object_set_data(G_OBJECT(tmp), "_dw_size", GINT_TO_POINTER(1));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3022 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3023 g_object_set_data(G_OBJECT(tmp), "_dw_style", GINT_TO_POINTER(flStyle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3024 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3025 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3026 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3027
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3028 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3029 * Create a new Box to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3030 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3031 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3032 * pad: Number of pixels to pad around the box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3033 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3034 HWND dw_box_new(int type, int pad)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3035 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3036 GtkWidget *tmp, *eventbox;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3037 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3038
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3039 DW_MUTEX_LOCK;
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
3040 tmp = gtk_grid_new();
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3041 eventbox = gtk_event_box_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3042
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3043 gtk_widget_show(eventbox);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3044 g_object_set_data(G_OBJECT(tmp), "_dw_eventbox", (gpointer)eventbox);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3045 g_object_set_data(G_OBJECT(tmp), "_dw_boxtype", GINT_TO_POINTER(type));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3046 g_object_set_data(G_OBJECT(tmp), "_dw_boxpad", GINT_TO_POINTER(pad));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3047 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3048 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3049 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3050 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3051
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3052 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3053 * Create a new scrollable Box to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3054 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3055 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3056 * pad: Number of pixels to pad around the box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3057 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3058 HWND dw_scrollbox_new( int type, int pad )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3059 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3060 GtkWidget *tmp, *box, *eventbox;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3061 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3062
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3063 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3064 tmp = gtk_scrolled_window_new(NULL, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3065 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (tmp), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3066
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
3067 box = gtk_grid_new();
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3068 eventbox = gtk_event_box_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3069
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3070 gtk_widget_show(eventbox);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3071 g_object_set_data(G_OBJECT(box), "_dw_eventbox", (gpointer)eventbox);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3072 g_object_set_data(G_OBJECT(box), "_dw_boxtype", GINT_TO_POINTER(type));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3073 g_object_set_data(G_OBJECT(box), "_dw_boxpad", GINT_TO_POINTER(pad));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3074 g_object_set_data(G_OBJECT(tmp), "_dw_boxhandle", (gpointer)box);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3075
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3076 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(tmp),box);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3077 g_object_set_data(G_OBJECT(tmp), "_dw_user", box);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3078 gtk_widget_show(box);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3079 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3080
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3081 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3082 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3083 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3084
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3085 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3086 * Returns the position of the scrollbar in the scrollbox
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3087 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3088 * handle: Handle to the scrollbox to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3089 * orient: The vertical or horizontal scrollbar.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3090 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3091 int dw_scrollbox_get_pos(HWND handle, int orient)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3092 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3093 int val = -1, _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3094 GtkAdjustment *adjustment;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3095
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3096 if (!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3097 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3098
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3099 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3100 if ( orient == DW_HORZ )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3101 adjustment = gtk_scrolled_window_get_hadjustment( GTK_SCROLLED_WINDOW(handle) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3102 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3103 adjustment = gtk_scrolled_window_get_vadjustment( GTK_SCROLLED_WINDOW(handle) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3104 if (adjustment)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3105 val = _round_value(gtk_adjustment_get_value(adjustment));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3106 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3107 return val;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3108 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3109
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3110 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3111 * Gets the range for the scrollbar in the scrollbox.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3112 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3113 * handle: Handle to the scrollbox to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3114 * orient: The vertical or horizontal scrollbar.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3115 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3116 int API dw_scrollbox_get_range(HWND handle, int orient)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3117 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3118 int range = -1, _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3119 GtkAdjustment *adjustment;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3120
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3121 if (!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3122 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3123
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3124 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3125 if ( orient == DW_HORZ )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3126 adjustment = gtk_scrolled_window_get_hadjustment( GTK_SCROLLED_WINDOW(handle) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3127 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3128 adjustment = gtk_scrolled_window_get_vadjustment( GTK_SCROLLED_WINDOW(handle) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3129 if (adjustment)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3130 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3131 range = _round_value(gtk_adjustment_get_upper(adjustment));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3132 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3133 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3134 return range;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3135 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3136
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3137 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3138 * Create a new Group Box to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3139 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3140 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3141 * pad: Number of pixels to pad around the box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3142 * title: Text to be displayined in the group outline.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3143 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3144 HWND dw_groupbox_new(int type, int pad, char *title)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3145 {
1038
2c2fcfeeffcc Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1022
diff changeset
3146 GtkWidget *tmp, *frame;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3147 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3148
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3149 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3150 frame = gtk_frame_new(NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3151 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3152 gtk_frame_set_label(GTK_FRAME(frame), title && *title ? title : NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3153
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
3154 tmp = gtk_grid_new();
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3155 gtk_container_set_border_width(GTK_CONTAINER(tmp), pad);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3156 g_object_set_data(G_OBJECT(tmp), "_dw_boxtype", GINT_TO_POINTER(type));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3157 g_object_set_data(G_OBJECT(tmp), "_dw_boxpad", GINT_TO_POINTER(pad));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3158 g_object_set_data(G_OBJECT(frame), "_dw_boxhandle", (gpointer)tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3159 gtk_container_add(GTK_CONTAINER(frame), tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3160 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3161 gtk_widget_show(frame);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3162 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3163 return frame;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3164 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3165
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3166 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3167 * Create a new MDI Frame to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3168 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3169 * id: An ID to be used with dw_window_from_id or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3170 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3171 HWND dw_mdi_new(unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3172 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3173 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3174 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3175
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3176 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3177 tmp = gtk_mdi_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3178 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3179 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3180 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3181 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3182
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3183 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3184 * Create a bitmap object to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3185 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3186 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3187 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3188 HWND dw_bitmap_new(unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3189 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3190 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3191 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3192
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3193 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3194 tmp = gtk_image_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3195 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3196 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3197 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3198 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3199 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3200
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3201 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3202 * Create a notebook object to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3203 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3204 * id: An ID to be used for getting the resource from the
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3205 * resource file.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3206 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3207 HWND dw_notebook_new(unsigned long id, int top)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3208 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3209 GtkWidget *tmp, **pagearray = calloc(sizeof(GtkWidget *), 256);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3210 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3211
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3212 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3213 tmp = gtk_notebook_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3214 if(top)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3215 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tmp), GTK_POS_TOP);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3216 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3217 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tmp), GTK_POS_BOTTOM);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3218 gtk_notebook_set_scrollable(GTK_NOTEBOOK(tmp), TRUE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3219 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3220 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3221 g_object_set_data(G_OBJECT(tmp), "_dw_pagearray", (gpointer)pagearray);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3222 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3223 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3224 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3225
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3226 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3227 * Create a menu object to be popped up.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3228 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3229 * id: An ID to be used for getting the resource from the
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3230 * resource file.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3231 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3232 HMENUI dw_menu_new(unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3233 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3234 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3235 GtkAccelGroup *accel_group;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3236 HMENUI tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3237
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3238 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3239 tmp = gtk_menu_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3240 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3241 accel_group = gtk_accel_group_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3242 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3243 g_object_set_data(G_OBJECT(tmp), "_dw_accel", (gpointer)accel_group);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3244 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3245 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3246 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3247
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3248 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3249 * Create a menubar on a window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3250 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3251 * location: Handle of a window frame to be attached to.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3252 * If there is no box already packed into the "location", the menu will not appear
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3253 * so tell the user.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3254 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3255 HMENUI dw_menubar_new(HWND location)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3256 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3257 GtkWidget *box;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3258 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3259 GtkAccelGroup *accel_group;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3260 HMENUI tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3261
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3262 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3263 tmp = gtk_menu_bar_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3264 box = (GtkWidget *)g_object_get_data(G_OBJECT(location), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3265 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3266 accel_group = gtk_accel_group_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3267 g_object_set_data(G_OBJECT(tmp), "_dw_accel", (gpointer)accel_group);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3268
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3269 if (box)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3270 gtk_box_pack_end(GTK_BOX(box), tmp, FALSE, FALSE, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3271 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3272 fprintf(stderr,"dw_menubar_new(): Coding error: You MUST pack a box into the window in which this menubar is to be added BEFORE calling this function.\n");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3273
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3274 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3275 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3276 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3277
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3278 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3279 * Destroys a menu created with dw_menubar_new or dw_menu_new.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3280 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3281 * menu: Handle of a menu.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3282 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3283 void dw_menu_destroy(HMENUI *menu)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3284 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3285 if(menu && *menu)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3286 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3287 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3288
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3289 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3290 gtk_widget_destroy(*menu);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3291 *menu = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3292 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3293 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3294 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3295
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3296 char _removetilde(char *dest, char *src)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3297 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3298 int z, cur=0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3299 char accel = '\0';
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3300
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3301 for(z=0;z<strlen(src);z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3302 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3303 if(src[z] != '~')
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3304 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3305 dest[cur] = src[z];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3306 cur++;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3307 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3308 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3309 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3310 dest[cur] = '_';
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3311 accel = src[z+1];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3312 cur++;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3313 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3314 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3315 dest[cur] = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3316 return accel;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3317 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3318
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3319 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3320 * Adds a menuitem or submenu to an existing menu.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3321 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3322 * menu: The handle to the existing menu.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3323 * title: The title text on the menu item to be added.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3324 * id: An ID to be used for message passing.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3325 * flags: Extended attributes to set on the menu.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3326 * end: If TRUE memu is positioned at the end of the menu.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3327 * check: If TRUE menu is "check"able.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3328 * submenu: Handle to an existing menu to be a submenu or NULL.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3329 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3330 HWND dw_menu_append_item(HMENUI menu, char *title, unsigned long id, unsigned long flags, int end, int check, HMENUI submenu)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3331 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3332 GtkWidget *tmphandle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3333 char accel, *tempbuf = malloc(strlen(title)+1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3334 int _locked_by_me = FALSE, submenucount;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3335 GtkAccelGroup *accel_group;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3336
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3337 if (!menu)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3338 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3339 free(tempbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3340 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3341 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3342
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3343 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3344 accel = _removetilde(tempbuf, title);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3345
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3346 accel_group = (GtkAccelGroup *)g_object_get_data(G_OBJECT(menu), "_dw_accel");
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
3347 submenucount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menu), "_dw_submenucount"));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3348
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3349 if (strlen(tempbuf) == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3350 tmphandle=gtk_menu_item_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3351 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3352 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3353 if (check)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3354 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3355 char numbuf[10];
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
3356
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3357 tmphandle = gtk_check_menu_item_new_with_label(tempbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3358 if (accel && accel_group)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3359 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3360 gtk_label_set_use_underline(GTK_LABEL(gtk_bin_get_child(GTK_BIN(tmphandle))), TRUE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3361 #if 0 /* TODO: This isn't working right */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3362 gtk_widget_add_accelerator(tmphandle, "activate", accel_group, tmp_key, GDK_MOD1_MASK, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3363 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3364 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3365 sprintf(numbuf, "%lu", id);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3366 g_object_set_data(G_OBJECT(menu), numbuf, (gpointer)tmphandle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3367 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3368 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3369 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3370 char numbuf[10];
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
3371
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3372 tmphandle=gtk_menu_item_new_with_label(tempbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3373 if (accel && accel_group)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3374 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3375 gtk_label_set_use_underline(GTK_LABEL(gtk_bin_get_child(GTK_BIN(tmphandle))), TRUE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3376 #if 0 /* TODO: This isn't working right */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3377 gtk_widget_add_accelerator(tmphandle, "activate", accel_group, tmp_key, GDK_MOD1_MASK, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3378 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3379 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3380 sprintf(numbuf, "%lu", id);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3381 g_object_set_data(G_OBJECT(menu), numbuf, (gpointer)tmphandle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3382 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3383 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3384
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3385 gtk_widget_show(tmphandle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3386
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3387 if (submenu)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3388 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3389 char tempbuf[100];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3390
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3391 sprintf(tempbuf, "_dw_submenu%d", submenucount);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3392 submenucount++;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3393 gtk_menu_item_set_submenu(GTK_MENU_ITEM(tmphandle), submenu);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3394 g_object_set_data(G_OBJECT(menu), tempbuf, (gpointer)submenu);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
3395 g_object_set_data(G_OBJECT(menu), "_dw_submenucount", GINT_TO_POINTER(submenucount));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3396 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3397
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3398 if (GTK_IS_MENU_BAR(menu))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3399 gtk_menu_shell_append(GTK_MENU_SHELL(menu), tmphandle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3400 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3401 gtk_menu_shell_append(GTK_MENU_SHELL(menu), tmphandle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3402
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3403 g_object_set_data(G_OBJECT(tmphandle), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3404 free(tempbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3405 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3406 * Set flags
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3407 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3408 if ( check && (flags & DW_MIS_CHECKED) )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3409 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3410 _dw_ignore_click = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3411 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(tmphandle), 1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3412 _dw_ignore_click = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3413 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3414
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3415 if ( flags & DW_MIS_DISABLED )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3416 gtk_widget_set_sensitive( tmphandle, FALSE );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3417
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3418 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3419 return tmphandle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3420 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3421
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3422 GtkWidget *_find_submenu_id(GtkWidget *start, char *name)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3423 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3424 GtkWidget *tmp;
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
3425 int z, submenucount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(start), "_dw_submenucount"));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3426
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3427 if((tmp = g_object_get_data(G_OBJECT(start), name)))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3428 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3429
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3430 for(z=0;z<submenucount;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3431 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3432 char tempbuf[100];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3433 GtkWidget *submenu, *menuitem;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3434
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3435 sprintf(tempbuf, "_dw_submenu%d", z);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3436
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3437 if((submenu = g_object_get_data(G_OBJECT(start), tempbuf)))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3438 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3439 if((menuitem = _find_submenu_id(submenu, name)))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3440 return menuitem;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3441 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3442 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3443 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3444 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3445
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3446 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3447 * Sets the state of a menu item check.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3448 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3449 * menu: The handle the the existing menu.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3450 * id: Menuitem id.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3451 * check: TRUE for checked FALSE for not checked.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3452 * deprecated: use dw_menu_item_set_state()
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3453 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3454 void dw_menu_item_set_check(HMENUI menu, unsigned long id, int check)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3455 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3456 char numbuf[10];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3457 GtkWidget *tmphandle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3458 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3459
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3460 if(!menu)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3461 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3462
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3463 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3464 sprintf(numbuf, "%lu", id);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3465 tmphandle = _find_submenu_id(menu, numbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3466
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3467 if(tmphandle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3468 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3469 _dw_ignore_click = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3470 if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(tmphandle)) != check)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3471 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(tmphandle), check);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3472 _dw_ignore_click = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3473 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3474 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3475 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3476
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3477 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3478 * Sets the state of a menu item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3479 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3480 * menu: The handle the the existing menu.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3481 * id: Menuitem id.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3482 * state: TRUE for checked FALSE for not checked.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3483 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3484 void dw_menu_item_set_state(HMENUI menu, unsigned long id, unsigned long state)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3485 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3486 char numbuf[10];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3487 GtkWidget *tmphandle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3488 int check;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3489 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3490
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3491 if(!menu)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3492 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3493
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3494 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3495 sprintf(numbuf, "%lu", id);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3496 tmphandle = _find_submenu_id(menu, numbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3497
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3498 if ( (state & DW_MIS_CHECKED) || (state & DW_MIS_UNCHECKED) )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3499 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3500 if ( state & DW_MIS_CHECKED )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3501 check = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3502 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3503 check = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3504
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3505 if (tmphandle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3506 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3507 _dw_ignore_click = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3508 if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(tmphandle)) != check)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3509 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(tmphandle), check);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3510 _dw_ignore_click = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3511 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3512 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3513 if ( (state & DW_MIS_ENABLED) || (state & DW_MIS_DISABLED) )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3514 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3515 if (tmphandle )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3516 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3517 _dw_ignore_click = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3518 if ( state & DW_MIS_ENABLED )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3519 gtk_widget_set_sensitive( tmphandle, TRUE );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3520 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3521 gtk_widget_set_sensitive( tmphandle, FALSE );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3522 _dw_ignore_click = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3523 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3524 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3525 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3526 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3527
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3528 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3529 * Pops up a context menu at given x and y coordinates.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3530 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3531 * menu: The handle the the existing menu.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3532 * parent: Handle to the window initiating the popup.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3533 * x: X coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3534 * y: Y coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3535 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3536 void dw_menu_popup(HMENUI *menu, HWND parent, int x, int y)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3537 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3538 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3539
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3540 if(!menu || !*menu)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3541 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3542
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3543 popup = parent;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3544
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3545 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3546 gtk_menu_popup(GTK_MENU(*menu), NULL, NULL, NULL, NULL, 1, GDK_CURRENT_TIME);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3547 *menu = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3548 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3549 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3550
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3551
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3552 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3553 * Returns the current X and Y coordinates of the mouse pointer.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3554 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3555 * x: Pointer to variable to store X coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3556 * y: Pointer to variable to store Y coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3557 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3558 void dw_pointer_query_pos(long *x, long *y)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3559 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3560 GdkModifierType state;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3561 int gx, gy;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3562 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3563
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3564 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3565 #ifdef GDK_WINDOWING_X11
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3566 gdk_window_get_pointer (gdk_x11_window_lookup_for_display(gdk_display_get_default(), GDK_ROOT_WINDOW()), &gx, &gy, &state);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3567 #endif
1122
e52c710e6d08 Minor change to allow dw_pointer_query_pos() to take NULL paramaters on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1121
diff changeset
3568 if(x)
e52c710e6d08 Minor change to allow dw_pointer_query_pos() to take NULL paramaters on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1121
diff changeset
3569 *x = gx;
e52c710e6d08 Minor change to allow dw_pointer_query_pos() to take NULL paramaters on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1121
diff changeset
3570 if(y)
e52c710e6d08 Minor change to allow dw_pointer_query_pos() to take NULL paramaters on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1121
diff changeset
3571 *y = gy;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3572 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3573 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3574
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3575 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3576 * Sets the X and Y coordinates of the mouse pointer.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3577 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3578 * x: X coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3579 * y: Y coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3580 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3581 void dw_pointer_set_pos(long x, long y)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3582 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3583 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3584
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3585 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3586 #ifdef GDK_WINDOWING_X11
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3587 gdk_display_warp_pointer( gdk_display_get_default(), gdk_screen_get_default(), x, y );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3588 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3589 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3590 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3591
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3592 #define _DW_TREE_CONTAINER 1
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3593 #define _DW_TREE_TREE 2
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3594 #define _DW_TREE_LISTBOX 3
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3595
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3596 GtkWidget *_tree_create(unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3597 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3598 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3599
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3600 tmp = gtk_scrolled_window_new(NULL, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3601 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (tmp),
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3602 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3603
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3604 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3605 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3606 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3607 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3608
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3609 GtkWidget *_tree_setup(GtkWidget *tmp, GtkTreeModel *store)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3610 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3611 GtkWidget *tree = gtk_tree_view_new_with_model(store);
900
2ba1f71e23fa Disable searching in GTK tree view based controls. It is very disconcerting.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 892
diff changeset
3612 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree), FALSE);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3613 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(tmp), tree);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3614 g_object_set_data(G_OBJECT(tmp), "_dw_user", (gpointer)tree);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3615 return tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3616 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3617
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3618 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3619 * Create a container object to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3620 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3621 * id: An ID to be used for getting the resource from the
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3622 * resource file.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3623 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3624 HWND dw_container_new(unsigned long id, int multi)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3625 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3626 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3627 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3628
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3629 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3630 if(!(tmp = _tree_create(id)))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3631 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3632 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3633 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3634 }
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
3635 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3636 g_object_set_data(G_OBJECT(tmp), "_dw_multi_sel", GINT_TO_POINTER(multi));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3637 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3638 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3639 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3640
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3641 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3642 * Create a tree object to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3643 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3644 * id: An ID to be used for getting the resource from the
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3645 * resource file.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3646 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3647 HWND dw_tree_new(ULONG id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3648 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3649 GtkWidget *tmp, *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3650 GtkTreeStore *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3651 GtkTreeViewColumn *col;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3652 GtkCellRenderer *rend;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3653 GtkTreeSelection *sel;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3654 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3655
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3656 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3657 if(!(tmp = _tree_create(id)))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3658 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3659 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3660 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3661 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3662 store = gtk_tree_store_new(4, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_POINTER, G_TYPE_POINTER);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3663 tree = _tree_setup(tmp, GTK_TREE_MODEL(store));
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
3664 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE));
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
3665 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3666 col = gtk_tree_view_column_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3667
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3668 rend = gtk_cell_renderer_pixbuf_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3669 gtk_tree_view_column_pack_start(col, rend, FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3670 gtk_tree_view_column_add_attribute(col, rend, "pixbuf", 1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3671 rend = gtk_cell_renderer_text_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3672 gtk_tree_view_column_pack_start(col, rend, TRUE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3673 gtk_tree_view_column_add_attribute(col, rend, "text", 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3674
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3675 gtk_tree_view_append_column(GTK_TREE_VIEW (tree), col);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3676 gtk_tree_view_set_expander_column(GTK_TREE_VIEW(tree), col);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3677 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3678
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3679 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3680 gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3681 gtk_widget_show(tree);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3682
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3683 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3684 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3685 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3686
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3687
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3688 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3689 * Create a new static text window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3690 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3691 * text: The text to be display by the static text widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3692 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3693 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3694 HWND dw_text_new(char *text, unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3695 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3696 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3697 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3698
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3699 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3700 tmp = gtk_label_new(text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3701
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3702 /* Left and centered */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3703 gtk_misc_set_alignment(GTK_MISC(tmp), 0.0f, 0.5f);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3704 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3705 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3706 gtk_misc_set_alignment(GTK_MISC(tmp), DW_LEFT, DW_LEFT);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3707 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3708 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3709 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3710
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3711 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3712 * Create a new status text window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3713 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3714 * text: The text to be display by the static text widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3715 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3716 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3717 HWND dw_status_text_new(char *text, ULONG id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3718 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3719 GtkWidget *tmp, *frame;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3720 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3721
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3722 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3723 frame = gtk_frame_new(NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3724 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3725 tmp = gtk_label_new(text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3726 gtk_container_add(GTK_CONTAINER(frame), tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3727 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3728 gtk_widget_show(frame);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3729
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3730 /* Left and centered */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3731 gtk_misc_set_alignment(GTK_MISC(tmp), 0.0f, 0.5f);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3732 g_object_set_data(G_OBJECT(frame), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3733 g_object_set_data(G_OBJECT(frame), "_dw_label", (gpointer)tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3734 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3735 return frame;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3736 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3737
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3738 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3739 * Create a new Multiline Editbox window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3740 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3741 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3742 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3743 HWND dw_mle_new(unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3744 {
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
3745 GtkWidget *tmp, *tmpbox;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3746 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3747
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3748 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3749 tmpbox = gtk_scrolled_window_new (NULL, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3750 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(tmpbox),
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3751 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3752 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(tmpbox), GTK_SHADOW_ETCHED_IN);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3753 tmp = gtk_text_view_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3754 gtk_container_add (GTK_CONTAINER(tmpbox), tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3755 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), GTK_WRAP_NONE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3756
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3757 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3758 g_object_set_data(G_OBJECT(tmpbox), "_dw_user", (gpointer)tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3759 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3760 gtk_widget_show(tmpbox);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3761 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3762 return tmpbox;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3763 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3764
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3765 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3766 * Create a new Entryfield window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3767 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3768 * text: The default text to be in the entryfield widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3769 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3770 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3771 HWND dw_entryfield_new(char *text, unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3772 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3773 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3774 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3776 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3777 tmp = gtk_entry_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3778
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3779 gtk_entry_set_text(GTK_ENTRY(tmp), text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3780
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3781 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3782 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3783
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3784 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3785 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3786 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3787
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3788 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3789 * Create a new Entryfield (password) window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3790 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3791 * text: The default text to be in the entryfield widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3792 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3793 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3794 HWND dw_entryfield_password_new(char *text, ULONG id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3795 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3796 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3797 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3798
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3799 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3800 tmp = gtk_entry_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3801
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3802 gtk_entry_set_visibility(GTK_ENTRY(tmp), FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3803 gtk_entry_set_text(GTK_ENTRY(tmp), text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3804
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3805 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3806 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3807
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3808 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3809 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3810 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3811
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3812 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3813 * Create a new Combobox window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3814 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3815 * text: The default text to be in the combpbox widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3816 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3817 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3818 HWND dw_combobox_new(char *text, unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3819 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3820 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3821 GtkListStore *store;
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
3822 int _locked_by_me = FALSE;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3823
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3824 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3825 store = gtk_list_store_new(1, G_TYPE_STRING);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3826 tmp = gtk_combo_box_new_with_model_and_entry(GTK_TREE_MODEL(store));
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
3827 gtk_combo_box_set_entry_text_column(GTK_COMBO_BOX(tmp), 0);
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
3828 gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(tmp))), text);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3829 gtk_widget_show(tmp);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
3830 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_COMBOBOX));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3831 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3832 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3833 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3834 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3835
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3836 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3837 * Create a new button window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3838 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3839 * text: The text to be display by the static text widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3840 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3841 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3842 HWND dw_button_new(char *text, unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3843 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3844 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3845 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3846
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3847 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3848 tmp = gtk_button_new_with_label(text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3849 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3850 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3851 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3852 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3853 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3854
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3855 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3856 * Create a new bitmap button window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3857 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3858 * text: Bubble help text to be displayed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3859 * id: An ID of a bitmap in the resource file.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3860 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3861 HWND dw_bitmapbutton_new(char *text, unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3862 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3863 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3864 GtkWidget *bitmap;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3865 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3866
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3867 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3868 tmp = gtk_button_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3869 bitmap = dw_bitmap_new(id);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3870
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3871 if(bitmap)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3872 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3873 dw_window_set_bitmap(bitmap, id, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3874 gtk_container_add (GTK_CONTAINER(tmp), bitmap);
1069
a1deca9b0876 Attempt at scaling bitmaps if they are too big for where they are packed on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1066
diff changeset
3875 g_object_set_data(G_OBJECT(tmp), "_dw_bitmap", bitmap);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3876 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3877 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3878 if(text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3879 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3880 gtk_widget_set_tooltip_text(tmp, text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3881 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3882 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3883 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3884 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3885 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3886
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3887 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3888 * Create a new bitmap button window (widget) to be packed from a file.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3889 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3890 * label_text: Text to display on button. TBD when Windows works
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3891 * text: Bubble help text to be displayed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3892 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3893 * filename: Name of the file, omit extention to have
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3894 * DW pick the appropriate file extension.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3895 * (BMP on OS/2 or Windows, XPM on Unix)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3896 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3897 HWND dw_bitmapbutton_new_from_file(char *text, unsigned long id, char *filename)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3898 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3899 GtkWidget *bitmap;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3900 GtkWidget *box;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3901 GtkWidget *label;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3902 GtkWidget *button;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3903 char *label_text=NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3904 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3905
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3906 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3907
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3908 /* Create box for image and label */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3909 box = gtk_hbox_new (FALSE, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3910 gtk_container_set_border_width (GTK_CONTAINER (box), 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3911
1069
a1deca9b0876 Attempt at scaling bitmaps if they are too big for where they are packed on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1066
diff changeset
3912 /* Create a new button */
a1deca9b0876 Attempt at scaling bitmaps if they are too big for where they are packed on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1066
diff changeset
3913 button = gtk_button_new();
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3914 /* Now on to the image stuff */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3915 bitmap = dw_bitmap_new(id);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3916 if(bitmap)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3917 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3918 dw_window_set_bitmap( bitmap, 0, filename );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3919 /* Pack the image into the box */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3920 gtk_box_pack_start( GTK_BOX(box), bitmap, TRUE, FALSE, 3 );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3921 gtk_widget_show( bitmap );
1069
a1deca9b0876 Attempt at scaling bitmaps if they are too big for where they are packed on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1066
diff changeset
3922 g_object_set_data(G_OBJECT(button), "_dw_bitmap", bitmap);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3923 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3924 if(label_text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3925 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3926 /* Create a label for the button */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3927 label = gtk_label_new( label_text );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3928 /* Pack the label into the box */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3929 gtk_box_pack_start( GTK_BOX(box), label, TRUE, FALSE, 3 );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3930 gtk_widget_show( label );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3931 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3932
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3933 /* Pack and show all our widgets */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3934 gtk_widget_show( box );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3935 gtk_container_add( GTK_CONTAINER(button), box );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3936 gtk_widget_show( button );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3937 if(text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3938 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3939 gtk_widget_set_tooltip_text(button, text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3940 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3941 g_object_set_data(G_OBJECT(button), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3942 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3943 return button;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3944 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3945
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3946 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3947 * Create a new bitmap button window (widget) to be packed from data.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3948 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3949 * text: Bubble help text to be displayed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3950 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3951 * data: Raw data of image.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3952 * (BMP on OS/2 or Windows, XPM on Unix)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3953 * len: Length of raw data
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3954 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3955 HWND dw_bitmapbutton_new_from_data(char *text, unsigned long id, char *data, int len)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3956 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3957 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3958 GtkWidget *bitmap;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3959 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3960
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3961 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3962 tmp = gtk_button_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3963 bitmap = dw_bitmap_new(id);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3964
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3965 if ( bitmap )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3966 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3967 dw_window_set_bitmap_from_data(bitmap, 0, data, len);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3968 gtk_container_add (GTK_CONTAINER(tmp), bitmap);
1069
a1deca9b0876 Attempt at scaling bitmaps if they are too big for where they are packed on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1066
diff changeset
3969 g_object_set_data(G_OBJECT(tmp), "_dw_bitmap", bitmap);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3970 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3971 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3972 if(text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3973 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3974 gtk_widget_set_tooltip_text(tmp, text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3975 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3976 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3977 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3978 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3979 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3980
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3981 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3982 * Create a new spinbutton window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3983 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3984 * text: The text to be display by the static text widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3985 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3986 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3987 HWND dw_spinbutton_new(char *text, unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3988 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3989 GtkAdjustment *adj;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3990 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3991 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3992
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3993 DW_MUTEX_LOCK;
1022
fa1a826348b3 Change the default range of spinbuttons to be -65536 to 65536 on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1021
diff changeset
3994 adj = (GtkAdjustment *)gtk_adjustment_new ((float)atoi(text), -65536.0, 65536.0, 1.0, 5.0, 0.0);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3995 tmp = gtk_spin_button_new (adj, 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3996 gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(tmp), TRUE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3997 gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(tmp), TRUE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3998 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3999 g_object_set_data(G_OBJECT(tmp), "_dw_adjustment", (gpointer)adj);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4000 g_object_set_data(G_OBJECT(adj), "_dw_spinbutton", (gpointer)tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4001 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4002 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4003 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4004 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4005
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4006 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4007 * Create a new radiobutton window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4008 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4009 * text: The text to be display by the static text widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4010 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4011 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4012 HWND dw_radiobutton_new(char *text, ULONG id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4013 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4014 /* This will have to be fixed in the future. */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4015 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4016 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4017
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4018 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4019 tmp = gtk_radio_button_new_with_label(NULL, text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4020 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4021 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4022
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4023 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4024 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4025 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4026
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4027 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4028 * Create a new slider window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4029 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4030 * vertical: TRUE or FALSE if slider is vertical.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4031 * increments: Number of increments available.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4032 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4033 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4034 HWND dw_slider_new(int vertical, int increments, ULONG id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4035 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4036 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4037 GtkAdjustment *adjustment;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4038 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4039
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4040 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4041 adjustment = (GtkAdjustment *)gtk_adjustment_new(0, 0, (gfloat)increments, 1, 1, 1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4042 if(vertical)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4043 tmp = gtk_vscale_new(adjustment);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4044 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4045 tmp = gtk_hscale_new(adjustment);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4046 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4047 gtk_scale_set_draw_value(GTK_SCALE(tmp), 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4048 gtk_scale_set_digits(GTK_SCALE(tmp), 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4049 g_object_set_data(G_OBJECT(tmp), "_dw_adjustment", (gpointer)adjustment);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4050 g_object_set_data(G_OBJECT(adjustment), "_dw_slider", (gpointer)tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4051 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4052 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4053 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4054 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4055
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4056 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4057 * Create a new scrollbar window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4058 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4059 * vertical: TRUE or FALSE if scrollbar is vertical.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4060 * increments: Number of increments available.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4061 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4062 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4063 HWND dw_scrollbar_new(int vertical, ULONG id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4064 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4065 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4066 GtkAdjustment *adjustment;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4067 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4068
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4069 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4070 adjustment = (GtkAdjustment *)gtk_adjustment_new(0, 0, 0, 1, 1, 1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4071 if(vertical)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4072 tmp = gtk_vscrollbar_new(adjustment);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4073 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4074 tmp = gtk_hscrollbar_new(adjustment);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4075 gtk_widget_set_can_focus(tmp, FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4076 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4077 g_object_set_data(G_OBJECT(tmp), "_dw_adjustment", (gpointer)adjustment);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4078 g_object_set_data(G_OBJECT(adjustment), "_dw_scrollbar", (gpointer)tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4079 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4080 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4081 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4082 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4083
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4084 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4085 * Create a new percent bar window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4086 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4087 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4088 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4089 HWND dw_percent_new(unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4090 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4091 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4092 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4093
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4094 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4095 tmp = gtk_progress_bar_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4096 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4097 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4098 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4099 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4100 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4101
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4102 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4103 * Create a new checkbox window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4104 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4105 * text: The text to be display by the static text widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4106 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4107 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4108 HWND dw_checkbox_new(char *text, unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4109 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4110 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4111 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4112
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4113 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4114 tmp = gtk_check_button_new_with_label(text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4115 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4116 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4117 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4118 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4119 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4120
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4121 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4122 * Create a new listbox window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4123 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4124 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4125 * multi: Multiple select TRUE or FALSE.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4126 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4127 HWND dw_listbox_new(unsigned long id, int multi)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4128 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4129 GtkWidget *tmp, *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4130 GtkListStore *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4131 GtkTreeViewColumn *col;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4132 GtkCellRenderer *rend;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4133 GtkTreeSelection *sel;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4134 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4135
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4136 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4137 if(!(tmp = _tree_create(id)))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4138 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4139 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4140 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4141 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4142 store = gtk_list_store_new(1, G_TYPE_STRING);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4143 tree = _tree_setup(tmp, GTK_TREE_MODEL(store));
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
4144 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX));
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
4145 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
4146
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4147 col = gtk_tree_view_column_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4148 rend = gtk_cell_renderer_text_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4149 gtk_tree_view_column_pack_start(col, rend, TRUE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4150 gtk_tree_view_column_add_attribute(col, rend, "text", 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4151
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4152 gtk_tree_view_append_column(GTK_TREE_VIEW (tree), col);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4153 gtk_tree_view_set_expander_column(GTK_TREE_VIEW(tree), col);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4154 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
4155
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4156 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4157 if(multi)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4158 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4159 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4160 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4161 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4162 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4163 gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4164 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
4165 gtk_widget_show(tree);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4166 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4167 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4168 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4169
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4170 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4171 * Sets the icon used for a given window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4172 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4173 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4174 * id: An ID to be used to specify the icon.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4175 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4176 void dw_window_set_icon(HWND handle, HICN icon)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4177 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4178 GdkPixbuf *icon_pixbuf;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4179 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4180
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4181 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4182 icon_pixbuf = _find_pixbuf(icon, NULL, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4183
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4184 if(gtk_widget_get_window(handle) && icon_pixbuf)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4185 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
4186 GList *list = g_list_append(NULL, icon_pixbuf);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4187 gdk_window_set_icon_list(gtk_widget_get_window(handle), list);
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
4188 g_list_free(list);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4189 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4190 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4191 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4192
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4193 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4194 * Sets the bitmap used for a given static window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4195 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4196 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4197 * id: An ID to be used to specify the icon,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4198 * (pass 0 if you use the filename param)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4199 * filename: a path to a file (Bitmap on OS/2 or
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4200 * Windows and a pixmap on Unix, pass
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4201 * NULL if you use the id param)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4202 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4203 void dw_window_set_bitmap(HWND handle, unsigned long id, char *filename)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4204 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4205 GdkPixbuf *tmp = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4206 int found_ext = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4207 int i;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4208 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4209
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4210 if(!id && !filename)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4211 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4212
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4213 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4214 if(id)
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
4215 tmp = _find_pixbuf((HICN)id, NULL, NULL);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4216 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4217 {
1258
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
4218 char *file = alloca(strlen(filename) + 6);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4219
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4220 if (!file)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4221 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4222 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4223 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4224 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4225
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4226 strcpy(file, filename);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4227
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4228 /* check if we can read from this file (it exists and read permission) */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4229 if ( access(file, 04 ) != 0 )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4230 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4231 /* Try with various extentions */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4232 for ( i = 0; i < NUM_EXTS; i++ )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4233 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4234 strcpy( file, filename );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4235 strcat( file, image_exts[i] );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4236 if ( access( file, 04 ) == 0 )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4237 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4238 found_ext = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4239 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4240 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4241 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4242 if ( found_ext == 0 )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4243 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4244 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4245 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4246 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4247 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4248 tmp = gdk_pixbuf_new_from_file(file, NULL );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4249 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4250
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4251 if (tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4252 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4253 if ( GTK_IS_BUTTON(handle) )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4254 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4255 GtkWidget *image = gtk_button_get_image( GTK_BUTTON(handle) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4256 gtk_image_set_from_pixbuf(GTK_IMAGE(image), tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4257 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4258 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4259 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4260 gtk_image_set_from_pixbuf(GTK_IMAGE(handle), tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4261 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4262 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4263 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4264 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4265
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4266 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4267 * Sets the bitmap used for a given static window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4268 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4269 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4270 * id: An ID to be used to specify the icon,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4271 * (pass 0 if you use the filename param)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4272 * data: the image data
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4273 * Bitmap on Windows and a pixmap on Unix, pass
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4274 * NULL if you use the id param)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4275 * len: length of data
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4276 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4277 void dw_window_set_bitmap_from_data(HWND handle, unsigned long id, char *data, int len)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4278 {
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
4279 GdkPixbuf *tmp = NULL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4280 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4281 char *file;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4282 FILE *fp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4283
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4284 if (!id && !data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4285 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4286
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4287 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4288 if (id)
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
4289 tmp = _find_pixbuf((HICN)id, NULL, NULL);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4290 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4291 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4292 if (!data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4293 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4294 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4295 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4296 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4297 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4298 * A real hack; create a temporary file and write the contents
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4299 * of the data to the file
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4300 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4301 file = tmpnam( NULL );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4302 fp = fopen( file, "wb" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4303 if ( fp )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4304 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4305 fwrite( data, len, 1, fp );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4306 fclose( fp );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4307 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4308 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4309 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4310 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4311 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4312 }
1097
8e9db23a8c31 Fixed icons from data by merging tmp and pixbuf together in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1096
diff changeset
4313 tmp = gdk_pixbuf_new_from_file(file, NULL );
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4314 /* remove our temporary file */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4315 unlink (file );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4316 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4317
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4318 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4319 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4320 gtk_image_set_from_pixbuf(GTK_IMAGE(handle), tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4321 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4322 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4323 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4324
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4325 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4326 * Sets the text used for a given window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4327 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4328 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4329 * text: The text associated with a given window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4330 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4331 void dw_window_set_text(HWND handle, char *text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4332 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4333 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4334 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4335
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4336 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4337 if((tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi_title")))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4338 handle = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4339 if(GTK_IS_ENTRY(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4340 gtk_entry_set_text(GTK_ENTRY(handle), text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4341 else if(GTK_IS_COMBO_BOX(handle))
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
4342 gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(handle))), text);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4343 else if(GTK_IS_LABEL(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4344 gtk_label_set_text(GTK_LABEL(handle), text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4345 else if(GTK_IS_BUTTON(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4346 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4347 gtk_button_set_label(GTK_BUTTON(handle), text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4348 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4349 else if(gtk_widget_is_toplevel(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4350 gtk_window_set_title(GTK_WINDOW(handle), text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4351 else if (GTK_IS_FRAME(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4352 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4353 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4354 * This is a groupbox or status_text
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4355 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4356 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_label");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4357 if ( tmp && GTK_IS_LABEL(tmp) )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4358 gtk_label_set_text(GTK_LABEL(tmp), text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4359 else /* assume groupbox */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4360 gtk_frame_set_label(GTK_FRAME(handle), text && *text ? text : NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4361 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4362 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4363 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4364
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4365 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4366 * Gets the text used for a given window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4367 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4368 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4369 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4370 * text: The text associsated with a given window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4371 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4372 char *dw_window_get_text(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4373 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4374 const char *possible = "";
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4375 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4376
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4377 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4378 if(GTK_IS_ENTRY(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4379 possible = gtk_entry_get_text(GTK_ENTRY(handle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4380 else if(GTK_IS_COMBO_BOX(handle))
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
4381 possible = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(handle))));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4382
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4383 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4384 return strdup(possible);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4385 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4386
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4387 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4388 * Disables given window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4389 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4390 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4391 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4392 void dw_window_disable(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4393 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4394 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4395
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4396 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4397 gtk_widget_set_sensitive(handle, FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4398 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4399 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4400
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4401 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4402 * Enables given window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4403 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4404 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4405 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4406 void dw_window_enable(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4407 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4408 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4409
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4410 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4411 gtk_widget_set_sensitive(handle, TRUE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4412 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4413 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4414
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4415 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4416 * Gets the child window handle with specified ID.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4417 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4418 * handle: Handle to the parent window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4419 * id: Integer ID of the child.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4420 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4421 HWND API dw_window_from_id(HWND handle, int id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4422 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4423 GList *orig = NULL, *list = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4424 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4425
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4426 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4427 if(handle && GTK_IS_CONTAINER(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4428 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4429 orig = list = gtk_container_get_children(GTK_CONTAINER(handle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4430 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4431 while(list)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4432 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4433 if(GTK_IS_WIDGET(list->data))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4434 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
4435 if(id == GPOINTER_TO_INT(g_object_get_data(G_OBJECT(list->data), "_dw_id")))
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4436 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4437 HWND ret = (HWND)list->data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4438 g_list_free(orig);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4439 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4440 return ret;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4441 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4442 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4443 list = list->next;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4444 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4445 if(orig)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4446 g_list_free(orig);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4447 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4448 return 0L;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4449 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4450
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4451 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4452 * Adds text to an MLE box and returns the current point.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4453 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4454 * handle: Handle to the MLE to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4455 * buffer: Text buffer to be imported.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4456 * startpoint: Point to start entering text.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4457 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4458 unsigned int dw_mle_import(HWND handle, char *buffer, int startpoint)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4459 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4460 unsigned int tmppoint = startpoint;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4461 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4462
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4463 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4464 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4465 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4466 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4467
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4468 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4469 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4470 GtkTextBuffer *tbuffer;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4471 GtkTextIter iter;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4472
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4473 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4474 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, startpoint);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4475 gtk_text_buffer_place_cursor(tbuffer, &iter);
994
f1c7b03f944d Removed carriage return stripping from GTK3, it is not needed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
4476 gtk_text_buffer_insert_at_cursor(tbuffer, buffer, -1);
f1c7b03f944d Removed carriage return stripping from GTK3, it is not needed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
4477 tmppoint = (startpoint > -1 ? startpoint : 0) + strlen(buffer);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4478 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4479 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4480 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4481 return tmppoint;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4482 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4483
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4484 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4485 * Grabs text from an MLE box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4486 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4487 * handle: Handle to the MLE to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4488 * buffer: Text buffer to be exported. MUST allow for trailing nul character.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4489 * startpoint: Point to start grabbing text.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4490 * length: Amount of text to be grabbed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4491 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4492 void dw_mle_export(HWND handle, char *buffer, int startpoint, int length)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4493 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4494 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4495 gchar *text;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4496
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4497 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4498 /* force the return value to nul in case the following tests fail */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4499 if(buffer)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4500 buffer[0] = '\0';
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4501 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4502 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4503 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4504
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4505 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4506 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4507 GtkTextBuffer *tbuffer;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4508 GtkTextIter start, end;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4509
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4510 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4511 gtk_text_buffer_get_iter_at_offset(tbuffer, &start, startpoint);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4512 gtk_text_buffer_get_iter_at_offset(tbuffer, &end, startpoint + length);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4513 text = gtk_text_iter_get_text(&start, &end);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4514 if(text) /* Should this get freed? */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4515 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4516 if(buffer)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4517 strcpy(buffer, text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4518 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4519 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4520 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4521 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4522 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4523
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4524 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4525 * Obtains information about an MLE box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4526 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4527 * handle: Handle to the MLE to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4528 * bytes: A pointer to a variable to return the total bytes.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4529 * lines: A pointer to a variable to return the number of lines.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4530 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4531 void dw_mle_get_size(HWND handle, unsigned long *bytes, unsigned long *lines)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4532 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4533 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4534
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4535 if(bytes)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4536 *bytes = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4537 if(lines)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4538 *lines = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4539
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4540 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4541 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4542 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4543 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4544
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4545 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4546 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4547 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tmp));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4548
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4549 if(bytes)
998
f019c5e8511f Fixed GTK reporting wrong character and line counts. 1000 revisions!!!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 994
diff changeset
4550 *bytes = gtk_text_buffer_get_char_count(buffer);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4551 if(lines)
998
f019c5e8511f Fixed GTK reporting wrong character and line counts. 1000 revisions!!!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 994
diff changeset
4552 *lines = gtk_text_buffer_get_line_count(buffer);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4553 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4554 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4555 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4556 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4557
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4558 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4559 * Deletes text from an MLE box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4560 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4561 * handle: Handle to the MLE to be deleted from.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4562 * startpoint: Point to start deleting text.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4563 * length: Amount of text to be deleted.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4564 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4565 void dw_mle_delete(HWND handle, int startpoint, int length)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4566 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4567 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4568
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4569 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4570 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4571 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4572 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4573
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4574 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4575 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4576 GtkTextBuffer *tbuffer;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4577 GtkTextIter start, end;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4578
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4579 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4580 gtk_text_buffer_get_iter_at_offset(tbuffer, &start, startpoint);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4581 gtk_text_buffer_get_iter_at_offset(tbuffer, &end, startpoint + length);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4582 gtk_text_buffer_delete(tbuffer, &start, &end);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4583 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4584 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4585 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4586 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4587
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4588 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4589 * Clears all text from an MLE box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4590 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4591 * handle: Handle to the MLE to be cleared.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4592 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4593 void dw_mle_clear(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4594 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4595 int length, _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4596
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4597 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4598 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4599 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4600 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4601
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4602 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4603 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4604 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tmp));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4605
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4606 length = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4607 gtk_text_buffer_set_text(buffer, "", length);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4608 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4609 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4610 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4611 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4612
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4613 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4614 * Sets the visible line of an MLE box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4615 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4616 * handle: Handle to the MLE.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4617 * line: Line to be visible.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4618 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4619 void dw_mle_set_visible(HWND handle, int line)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4620 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4621 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4622
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4623 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4624 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4625 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4626 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4627
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4628 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4629 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4630 GtkTextBuffer *tbuffer;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4631 GtkTextIter iter;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4632 GtkTextMark *mark = (GtkTextMark *)g_object_get_data(G_OBJECT(handle), "_dw_mark");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4633
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4634 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4635 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4636 gtk_text_iter_set_line(&iter, line);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4637 if(!mark)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4638 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4639 mark = gtk_text_buffer_create_mark(tbuffer, NULL, &iter, FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4640 g_object_set_data(G_OBJECT(handle), "_dw_mark", (gpointer)mark);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4641 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4642 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4643 gtk_text_buffer_move_mark(tbuffer, mark, &iter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4644 gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(tmp), mark,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4645 0, FALSE, 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4646 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4647 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4648 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4649 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4650
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4651 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4652 * Sets the editablity of an MLE box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4653 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4654 * handle: Handle to the MLE.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4655 * state: TRUE if it can be edited, FALSE for readonly.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4656 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4657 void dw_mle_set_editable(HWND handle, int state)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4658 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4659 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4660
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4661 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4662 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4663 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4664 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4665
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4666 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4667 gtk_text_view_set_editable(GTK_TEXT_VIEW(tmp), state);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4668 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4669 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4670 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4671
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4672 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4673 * Sets the word wrap state of an MLE box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4674 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4675 * handle: Handle to the MLE.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4676 * state: TRUE if it wraps, FALSE if it doesn't.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4677 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4678 void dw_mle_set_word_wrap(HWND handle, int state)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4679 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4680 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4681
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4682 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4683 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4684 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4685 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4686
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4687 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4688 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), GTK_WRAP_WORD);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4689 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4690 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4691 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4692
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4693 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4694 * Sets the current cursor position of an MLE box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4695 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4696 * handle: Handle to the MLE to be positioned.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4697 * point: Point to position cursor.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4698 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4699 void dw_mle_set_cursor(HWND handle, int point)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4700 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4701 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4702
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4703 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4704 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4705 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4706 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4707
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4708 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4709 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4710 GtkTextBuffer *tbuffer;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4711 GtkTextIter iter;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4712 GtkTextMark *mark = (GtkTextMark *)g_object_get_data(G_OBJECT(handle), "_dw_mark");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4713
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4714 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4715 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, point);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4716 if(!mark)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4717 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4718 mark = gtk_text_buffer_create_mark(tbuffer, NULL, &iter, FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4719 g_object_set_data(G_OBJECT(handle), "_dw_mark", (gpointer)mark);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4720 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4721 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4722 gtk_text_buffer_move_mark(tbuffer, mark, &iter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4723 gtk_text_buffer_place_cursor(tbuffer, &iter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4724 gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(tmp), mark,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4725 0, FALSE, 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4726 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4727 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4728 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4729 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4730
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4731 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4732 * Finds text in an MLE box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4733 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4734 * handle: Handle to the MLE to be cleared.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4735 * text: Text to search for.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4736 * point: Start point of search.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4737 * flags: Search specific flags.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4738 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4739 int dw_mle_search(HWND handle, char *text, int point, unsigned long flags)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4740 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4741 int _locked_by_me = FALSE, retval = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4742
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4743 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4744 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4745 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4746 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4747
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4748 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4749 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4750 GtkTextBuffer *tbuffer;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4751 GtkTextIter iter, found;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4752
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4753 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4754 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, point);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4755 gtk_text_iter_forward_search(&iter, text, GTK_TEXT_SEARCH_TEXT_ONLY, &found, NULL, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4756 retval = gtk_text_iter_get_offset(&found);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4757 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4758 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4759 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4760 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4761 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4762
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4763 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4764 * Stops redrawing of an MLE box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4765 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4766 * handle: Handle to the MLE to freeze.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4767 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4768 void dw_mle_freeze(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4769 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4770 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4771
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4772 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4773 * Resumes redrawing of an MLE box.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4774 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4775 * handle: Handle to the MLE to thaw.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4776 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4777 void dw_mle_thaw(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4778 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4779 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4780
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4781 /* Internal function to update the progress bar
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4782 * while in an indeterminate state.
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4783 */
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4784 gboolean _dw_update_progress_bar(gpointer data)
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4785 {
1191
40500dabb112 Compile fix and fix for returning wrong value from the timeout function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
4786 if(g_object_get_data(G_OBJECT(data), "_dw_alive"))
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4787 {
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4788 gtk_progress_bar_pulse(GTK_PROGRESS_BAR(data));
1191
40500dabb112 Compile fix and fix for returning wrong value from the timeout function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
4789 return TRUE;
40500dabb112 Compile fix and fix for returning wrong value from the timeout function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
4790 }
40500dabb112 Compile fix and fix for returning wrong value from the timeout function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
4791 return FALSE;
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4792 }
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4793
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4794 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4795 * Sets the percent bar position.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4796 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4797 * handle: Handle to the percent bar to be set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4798 * position: Position of the percent bar withing the range.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4799 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4800 void dw_percent_set_pos(HWND handle, unsigned int position)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4801 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4802 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4803
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4804 DW_MUTEX_LOCK;
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4805 if(position == DW_PERCENT_INDETERMINATE)
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4806 {
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4807 /* Check if we are indeterminate already */
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4808 if(!g_object_get_data(G_OBJECT(handle), "_dw_alive"))
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4809 {
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4810 /* If not become indeterminate... and start a timer to continue */
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4811 gtk_progress_bar_pulse(GTK_PROGRESS_BAR(handle));
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4812 g_object_set_data(G_OBJECT(handle), "_dw_alive", GINT_TO_POINTER(1));
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4813 g_timeout_add(100, (GSourceFunc)_dw_update_progress_bar, (gpointer)handle);
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4814 }
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4815 }
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4816 else
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4817 {
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4818 /* Cancel the existing timer if one is there */
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4819 g_object_set_data(G_OBJECT(handle), "_dw_alive", NULL);
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4820 /* Set the position like normal */
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4821 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(handle), (gfloat)position/100);
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1185
diff changeset
4822 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4823 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4824 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4825
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4826 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4827 * Returns the position of the slider.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4828 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4829 * handle: Handle to the slider to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4830 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4831 unsigned int dw_slider_get_pos(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4832 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4833 int val = 0, _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4834 GtkAdjustment *adjustment;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4835
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4836 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4837 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4838
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4839 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4840 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4841 if(adjustment)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4842 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4843 int max = _round_value(gtk_adjustment_get_upper(adjustment)) - 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4844 int thisval = _round_value(gtk_adjustment_get_value(adjustment));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4845
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4846 if(GTK_IS_VSCALE(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4847 val = max - thisval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4848 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4849 val = thisval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4850 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4851 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4852 return val;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4853 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4854
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4855 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4856 * Sets the slider position.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4857 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4858 * handle: Handle to the slider to be set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4859 * position: Position of the slider withing the range.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4860 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4861 void dw_slider_set_pos(HWND handle, unsigned int position)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4862 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4863 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4864 GtkAdjustment *adjustment;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4865
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4866 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4867 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4868
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4869 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4870 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4871 if(adjustment)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4872 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4873 int max = _round_value(gtk_adjustment_get_upper(adjustment)) - 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4874
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4875 if(GTK_IS_VSCALE(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4876 gtk_adjustment_set_value(adjustment, (gfloat)(max - position));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4877 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4878 gtk_adjustment_set_value(adjustment, (gfloat)position);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4879 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4880 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4881 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4882
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4883 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4884 * Returns the position of the scrollbar.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4885 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4886 * handle: Handle to the scrollbar to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4887 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4888 unsigned int dw_scrollbar_get_pos(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4889 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4890 int val = 0, _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4891 GtkAdjustment *adjustment;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4892
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4893 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4894 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4895
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4896 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4897 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4898 if(adjustment)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4899 val = _round_value(gtk_adjustment_get_value(adjustment));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4900 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4901 return val;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4902 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4903
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4904 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4905 * Sets the scrollbar position.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4906 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4907 * handle: Handle to the scrollbar to be set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4908 * position: Position of the scrollbar withing the range.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4909 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4910 void dw_scrollbar_set_pos(HWND handle, unsigned int position)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4911 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4912 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4913 GtkAdjustment *adjustment;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4914
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4915 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4916 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4917
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4918 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4919 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4920 if(adjustment)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4921 gtk_adjustment_set_value(adjustment, (gfloat)position);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4922 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4923 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4924
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4925 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4926 * Sets the scrollbar range.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4927 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4928 * handle: Handle to the scrollbar to be set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4929 * range: Maximum range value.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4930 * visible: Visible area relative to the range.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4931 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4932 void API dw_scrollbar_set_range(HWND handle, unsigned int range, unsigned int visible)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4933 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4934 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4935 GtkAdjustment *adjustment;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4936
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4937 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4938 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4939
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4940 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4941 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4942 if(adjustment)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4943 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4944 gtk_adjustment_set_upper(adjustment, (gdouble)range);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4945 gtk_adjustment_set_page_increment(adjustment,(gdouble)visible);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4946 gtk_adjustment_set_page_size(adjustment, (gdouble)visible);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4947 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4948 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4949 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4950
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4951 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4952 * Sets the spinbutton value.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4953 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4954 * handle: Handle to the spinbutton to be set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4955 * position: Current value of the spinbutton.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4956 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4957 void dw_spinbutton_set_pos(HWND handle, long position)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4958 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4959 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4960
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4961 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4962 gtk_spin_button_set_value(GTK_SPIN_BUTTON(handle), (gfloat)position);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4963 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4964 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4965
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4966 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4967 * Sets the spinbutton limits.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4968 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4969 * handle: Handle to the spinbutton to be set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4970 * position: Current value of the spinbutton.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4971 * position: Current value of the spinbutton.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4972 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4973 void dw_spinbutton_set_limits(HWND handle, long upper, long lower)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4974 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4975 long curval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4976 GtkAdjustment *adj;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4977 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4978
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4979 curval = dw_spinbutton_get_pos(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4980 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4981 adj = (GtkAdjustment *)gtk_adjustment_new((gfloat)curval, (gfloat)lower, (gfloat)upper, 1.0, 5.0, 0.0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4982 gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(handle), adj);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4983 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4984 * Set our internal relationships between the adjustment and the spinbutton
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4985 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4986 g_object_set_data(G_OBJECT(handle), "_dw_adjustment", (gpointer)adj);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4987 g_object_set_data(G_OBJECT(adj), "_dw_spinbutton", (gpointer)handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4988 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4989 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4990
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4991 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4992 * Sets the entryfield character limit.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4993 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4994 * handle: Handle to the spinbutton to be set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4995 * limit: Number of characters the entryfield will take.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4996 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4997 void dw_entryfield_set_limit(HWND handle, ULONG limit)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4998 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4999 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5000
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5001 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5002 gtk_entry_set_max_length(GTK_ENTRY(handle), limit);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5003 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5004 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5005
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5006 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5007 * Returns the current value of the spinbutton.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5008 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5009 * handle: Handle to the spinbutton to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5010 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5011 long dw_spinbutton_get_pos(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5012 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5013 long retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5014 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5015
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5016 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5017 retval = (long)gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(handle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5018 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5019
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5020 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5021 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5022
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5023 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5024 * Returns the state of the checkbox.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5025 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5026 * handle: Handle to the checkbox to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5027 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5028 int dw_checkbox_get(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5029 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5030 int retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5031 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5032
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5033 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5034 retval = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(handle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5035 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5036
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5037 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5038 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5039
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5040 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5041 * Sets the state of the checkbox.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5042 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5043 * handle: Handle to the checkbox to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5044 * value: TRUE for checked, FALSE for unchecked.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5045 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5046 void dw_checkbox_set(HWND handle, int value)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5047 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5048 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5049
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5050 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5051 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(handle), value);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5052 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5053 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5054
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5055 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5056 * Inserts an item into a tree window (widget) after another item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5057 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5058 * handle: Handle to the tree to be inserted.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5059 * item: Handle to the item to be positioned after.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5060 * title: The text title of the entry.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5061 * icon: Handle to coresponding icon.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5062 * parent: Parent handle or 0 if root.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5063 * itemdata: Item specific data.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5064 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5065 HTREEITEM dw_tree_insert_after(HWND handle, HTREEITEM item, char *title, HICN icon, HTREEITEM parent, void *itemdata)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5066 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5067 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5068 GtkTreeIter *iter;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5069 GtkTreeStore *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5070 GdkPixbuf *pixbuf;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5071 HTREEITEM retval = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5072 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5073
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5074 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5075 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5076
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5077 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5078 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5079 && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5080 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5081 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5082 iter = (GtkTreeIter *)malloc(sizeof(GtkTreeIter));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5083
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5084 pixbuf = _find_pixbuf(icon, NULL, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5085
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5086 gtk_tree_store_insert_after(store, iter, (GtkTreeIter *)parent, (GtkTreeIter *)item);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5087 gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, 2, itemdata, 3, iter, -1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5088 retval = (HTREEITEM)iter;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5089 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5090 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5091
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5092 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5093 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5094
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5095 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5096 * Inserts an item into a tree window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5097 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5098 * handle: Handle to the tree to be inserted.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5099 * title: The text title of the entry.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5100 * icon: Handle to coresponding icon.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5101 * parent: Parent handle or 0 if root.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5102 * itemdata: Item specific data.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5103 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5104 HTREEITEM dw_tree_insert(HWND handle, char *title, HICN icon, HTREEITEM parent, void *itemdata)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5105 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5106 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5107 GtkTreeIter *iter;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5108 GtkTreeStore *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5109 GdkPixbuf *pixbuf;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5110 HTREEITEM retval = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5111 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5112
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5113 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5114 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5115
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5116 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5117 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5118 && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5119 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5120 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5121 iter = (GtkTreeIter *)malloc(sizeof(GtkTreeIter));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5122
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5123 pixbuf = _find_pixbuf(icon, NULL, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5124
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5125 gtk_tree_store_append (store, iter, (GtkTreeIter *)parent);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5126 gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, 2, itemdata, 3, iter, -1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5127 retval = (HTREEITEM)iter;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5128 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5129 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5130
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5131 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5132 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5133
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5134 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5135 * Sets the text and icon of an item in a tree window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5136 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5137 * handle: Handle to the tree containing the item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5138 * item: Handle of the item to be modified.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5139 * title: The text title of the entry.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5140 * icon: Handle to coresponding icon.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5141 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5142 void dw_tree_item_change(HWND handle, HTREEITEM item, char *title, HICN icon)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5143 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5144 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5145 GtkTreeStore *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5146 GdkPixbuf *pixbuf;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5147 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5148
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5149 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5150 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5151
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5152 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5153 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5154 && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5155 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5156 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5157 pixbuf = _find_pixbuf(icon, NULL, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5158
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5159 gtk_tree_store_set(store, (GtkTreeIter *)item, 0, title, 1, pixbuf, -1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5160 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5161 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5162 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5163
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5164 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5165 * Sets the item data of a tree item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5166 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5167 * handle: Handle to the tree containing the item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5168 * item: Handle of the item to be modified.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5169 * itemdata: User defined data to be associated with item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5170 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5171 void dw_tree_item_set_data(HWND handle, HTREEITEM item, void *itemdata)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5172 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5173 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5174 GtkTreeStore *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5175 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5176
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5177 if(!handle || !item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5178 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5179
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5180 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5181 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5182 && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5183 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5184 gtk_tree_store_set(store, (GtkTreeIter *)item, 2, itemdata, -1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5185 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5186 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5187
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5188 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5189 * Gets the text an item in a tree window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5190 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5191 * handle: Handle to the tree containing the item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5192 * item: Handle of the item to be modified.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5193 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5194 char * API dw_tree_get_title(HWND handle, HTREEITEM item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5195 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5196 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5197 char *text = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5198 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5199 GtkTreeModel *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5200
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5201 if(!handle || !item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5202 return text;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5203
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5204 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5205 tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5206
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5207 if(tree && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5208 (store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5209 gtk_tree_model_get(store, (GtkTreeIter *)item, 0, &text, -1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5210 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5211 return text;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5212 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5213
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5214 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5215 * Gets the text an item in a tree window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5216 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5217 * handle: Handle to the tree containing the item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5218 * item: Handle of the item to be modified.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5219 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5220 HTREEITEM API dw_tree_get_parent(HWND handle, HTREEITEM item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5221 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5222 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5223 HTREEITEM parent = (HTREEITEM)0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5224 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5225 GtkTreeModel *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5226
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5227 if(!handle || !item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5228 return parent;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5229
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5230 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5231 tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5232
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5233 if(tree && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5234 (store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5235 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5236 GtkTreeIter *p = malloc(sizeof(GtkTreeIter));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5237
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5238 if(gtk_tree_model_iter_parent(store, p, (GtkTreeIter *)item))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5239 parent = p;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5240 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5241 free(p);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5242 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5243 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5244 return parent;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5245 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5246
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5247 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5248 * Gets the item data of a tree item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5249 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5250 * handle: Handle to the tree containing the item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5251 * item: Handle of the item to be modified.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5252 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5253 void *dw_tree_item_get_data(HWND handle, HTREEITEM item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5254 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5255 void *ret = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5256 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5257 GtkTreeModel *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5258 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5259
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5260 if(!handle || !item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5261 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5262
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5263 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5264 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5265 && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5266 (store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5267 gtk_tree_model_get(store, (GtkTreeIter *)item, 2, &ret, -1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5268 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5269 return ret;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5270 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5271
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5272 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5273 * Sets this item as the active selection.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5274 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5275 * handle: Handle to the tree window (widget) to be selected.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5276 * item: Handle to the item to be selected.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5277 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5278 void dw_tree_item_select(HWND handle, HTREEITEM item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5279 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5280 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5281 GtkTreeStore *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5282 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5283
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5284 if(!handle || !item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5285 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5286
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5287 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5288 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5289 && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5290 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5291 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5292 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5293 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5294
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5295 gtk_tree_view_set_cursor(GTK_TREE_VIEW(tree), path, NULL, FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5296 gtk_tree_selection_select_iter(sel, (GtkTreeIter *)item);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5297 gtk_tree_path_free(path);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5298 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5299 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5300 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5301
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5302 static void _dw_recursive_free(GtkTreeModel *store, GtkTreeIter parent)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5303 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5304 void *data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5305 GtkTreeIter iter;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5306
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5307 gtk_tree_model_get(store, &parent, 3, &data, -1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5308 if(data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5309 free(data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5310 gtk_tree_store_set(GTK_TREE_STORE(store), &parent, 3, NULL, -1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5311
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5312 if(gtk_tree_model_iter_children(store, &iter, &parent))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5313 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5314 do {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5315 _dw_recursive_free(GTK_TREE_MODEL(store), iter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5316 } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5317 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5318 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5319
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5320 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5321 * Removes all nodes from a tree.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5322 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5323 * handle: Handle to the window (widget) to be cleared.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5324 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5325 void dw_tree_clear(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5326 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5327 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5328 GtkTreeStore *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5329 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5330
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5331 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5332 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5333
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5334 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5335 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5336 && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5337 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5338 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5339 GtkTreeIter iter;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5340
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5341 if(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5342 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5343 do {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5344 _dw_recursive_free(GTK_TREE_MODEL(store), iter);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5345 } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5346 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5347 gtk_tree_store_clear(store);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5348 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5349 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5350 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5351
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5352 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5353 * Expands a node on a tree.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5354 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5355 * handle: Handle to the tree window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5356 * item: Handle to node to be expanded.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5357 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5358 void dw_tree_item_expand(HWND handle, HTREEITEM item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5359 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5360 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5361 GtkTreeStore *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5362 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5363
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5364 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5365 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5366
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5367 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5368 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5369 && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5370 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5371 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5372 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5373 gtk_tree_view_expand_row(GTK_TREE_VIEW(tree), path, FALSE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5374 gtk_tree_path_free(path);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5375 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5376 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5377 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5378
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5379 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5380 * Collapses a node on a tree.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5381 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5382 * handle: Handle to the tree window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5383 * item: Handle to node to be collapsed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5384 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5385 void dw_tree_item_collapse(HWND handle, HTREEITEM item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5386 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5387 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5388 GtkTreeStore *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5389 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5390
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5391 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5392 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5393
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5394 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5395 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5396 && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5397 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5398 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5399 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5400 gtk_tree_view_collapse_row(GTK_TREE_VIEW(tree), path);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5401 gtk_tree_path_free(path);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5402 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5403 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5404 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5405
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5406 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5407 * Removes a node from a tree.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5408 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5409 * handle: Handle to the window (widget) to be cleared.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5410 * item: Handle to node to be deleted.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5411 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5412 void dw_tree_item_delete(HWND handle, HTREEITEM item)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5413 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5414 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5415 GtkTreeStore *store;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5416 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5417
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5418 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5419 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5420
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5421 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5422 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5423 && GTK_IS_TREE_VIEW(tree) &&
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5424 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5425 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5426 gtk_tree_store_remove(store, (GtkTreeIter *)item);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5427 free(item);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5428 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5429 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5430 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5431
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5432 static int _dw_container_setup(HWND handle, unsigned long *flags, char **titles, int count, int separator, int extra)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5433 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5434 int z;
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5435 char numbuf[20];
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5436 GtkWidget *tree;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5437 GtkListStore *store;
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
5438 GtkTreeViewColumn *col;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5439 GtkCellRenderer *rend;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5440 GtkTreeSelection *sel;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5441 int _locked_by_me = FALSE;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5442 GType *array = calloc(count + 2, sizeof(GType));
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
5443
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
5444 DW_MUTEX_LOCK;
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
5445 /* Save some of the info so it is easily accessible */
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
5446 g_object_set_data(G_OBJECT(handle), "_dw_cont_columns", GINT_TO_POINTER(count));
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5447 g_object_set_data(G_OBJECT(handle), "_dw_cont_extra", GINT_TO_POINTER(extra));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5448
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
5449 /* First param is row title/data */
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
5450 array[0] = G_TYPE_POINTER;
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5451 array[1] = G_TYPE_POINTER;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5452 /* First loop... create array to create the store */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5453 for(z=0;z<count;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5454 {
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5455 if(z == 0 && flags[z] & DW_CFA_STRINGANDICON)
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5456 {
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5457 array[1] = GDK_TYPE_PIXBUF;
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5458 array[2] = G_TYPE_STRING;
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5459 }
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5460 else if(flags[z] & DW_CFA_BITMAPORICON)
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5461 {
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5462 array[z+2] = GDK_TYPE_PIXBUF;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5463 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5464 else if(flags[z] & DW_CFA_STRING)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5465 {
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5466 array[z+2] = G_TYPE_STRING;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5467 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5468 else if(flags[z] & DW_CFA_ULONG)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5469 {
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5470 array[z+2] = G_TYPE_ULONG;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5471 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5472 else if(flags[z] & DW_CFA_TIME)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5473 {
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5474 array[z+2] = G_TYPE_STRING;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5475 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5476 else if(flags[z] & DW_CFA_DATE)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5477 {
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5478 array[z+2] = G_TYPE_STRING;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5479 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5480 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5481 /* Create the store and then the tree */
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5482 store = gtk_list_store_newv(count+2, array);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5483 tree = _tree_setup(handle, GTK_TREE_MODEL(store));
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
5484 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5485 /* Second loop... create the columns */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5486 for(z=0;z<count;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5487 {
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5488 sprintf(numbuf, "_dw_cont_col%d", z);
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5489 g_object_set_data(G_OBJECT(tree), numbuf, GINT_TO_POINTER(flags[z]));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5490 col = gtk_tree_view_column_new();
884
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5491 rend = NULL;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5492
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5493 if(z == 0 && flags[z] & DW_CFA_STRINGANDICON)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5494 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5495 rend = gtk_cell_renderer_pixbuf_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5496 gtk_tree_view_column_pack_start(col, rend, FALSE);
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5497 gtk_tree_view_column_add_attribute(col, rend, "pixbuf", 1);
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5498 rend = gtk_cell_renderer_text_new();
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5499 gtk_tree_view_column_pack_start(col, rend, TRUE);
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5500 gtk_tree_view_column_add_attribute(col, rend, "text", 2);
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5501 }
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5502 else if(flags[z] & DW_CFA_BITMAPORICON)
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5503 {
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5504 rend = gtk_cell_renderer_pixbuf_new();
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5505 gtk_tree_view_column_pack_start(col, rend, FALSE);
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5506 gtk_tree_view_column_add_attribute(col, rend, "pixbuf", z+2);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5507 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5508 else if(flags[z] & DW_CFA_STRING)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5509 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5510 rend = gtk_cell_renderer_text_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5511 gtk_tree_view_column_pack_start(col, rend, TRUE);
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5512 gtk_tree_view_column_add_attribute(col, rend, "text", z+2);
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
5513 gtk_tree_view_column_set_resizable(col, TRUE);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5514 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5515 else if(flags[z] & DW_CFA_ULONG)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5516 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5517 rend = gtk_cell_renderer_text_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5518 gtk_tree_view_column_pack_start(col, rend, TRUE);
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5519 gtk_tree_view_column_add_attribute(col, rend, "text", z+2);
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
5520 gtk_tree_view_column_set_resizable(col, TRUE);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5521 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5522 else if(flags[z] & DW_CFA_TIME)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5523 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5524 rend = gtk_cell_renderer_text_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5525 gtk_tree_view_column_pack_start(col, rend, TRUE);
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5526 gtk_tree_view_column_add_attribute(col, rend, "text", z+2);
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
5527 gtk_tree_view_column_set_resizable(col, TRUE);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5528 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5529 else if(flags[z] & DW_CFA_DATE)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5530 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5531 rend = gtk_cell_renderer_text_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5532 gtk_tree_view_column_pack_start(col, rend, TRUE);
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5533 gtk_tree_view_column_add_attribute(col, rend, "text", z+2);
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
5534 gtk_tree_view_column_set_resizable(col, TRUE);
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
5535 }
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5536 g_object_set_data(G_OBJECT(col), "_dw_column", GINT_TO_POINTER(z));
786
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
5537 g_signal_connect(G_OBJECT(col), "clicked", G_CALLBACK(_column_click_event), (gpointer)tree);
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
5538 gtk_tree_view_column_set_title(col, titles[z]);
884
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5539 if(flags[z] & DW_CFA_RIGHT)
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5540 {
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5541 gtk_tree_view_column_set_alignment(col, 1.0);
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5542 if(rend)
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5543 gtk_cell_renderer_set_alignment(rend, 1.0, 0.5);
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5544 }
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5545 else if(flags[z] & DW_CFA_CENTER)
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5546 {
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5547 gtk_tree_view_column_set_alignment(col, 0.5);
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5548 if(rend)
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5549 gtk_cell_renderer_set_alignment(rend, 0.5, 0.5);
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5550 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5551 gtk_tree_view_append_column(GTK_TREE_VIEW (tree), col);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5552 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5553 /* Finish up */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5554 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), TRUE);
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
5555 gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(tree), TRUE);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
5556 gtk_tree_view_set_rubber_banding(GTK_TREE_VIEW(tree), TRUE);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5557 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5558 if(g_object_get_data(G_OBJECT(handle), "_dw_multi_sel"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5559 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5560 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5561 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5562 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5563 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5564 gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5565 }
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
5566 gtk_widget_show(tree);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5567 free(array);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5568 DW_MUTEX_UNLOCK;
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
5569 return DW_ERROR_NONE;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5570 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5571
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5572 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5573 * Sets up the container columns.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5574 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5575 * handle: Handle to the container to be configured.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5576 * flags: An array of unsigned longs with column flags.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5577 * titles: An array of strings with column text titles.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5578 * count: The number of columns (this should match the arrays).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5579 * separator: The column number that contains the main separator.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5580 * (this item may only be used in OS/2)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5581 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5582 int dw_container_setup(HWND handle, unsigned long *flags, char **titles, int count, int separator)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5583 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5584 return _dw_container_setup(handle, flags, titles, count, separator, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5585 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5586
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5587 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5588 * Sets up the filesystem columns, note: filesystem always has an icon/filename field.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5589 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5590 * handle: Handle to the container to be configured.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5591 * flags: An array of unsigned longs with column flags.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5592 * titles: An array of strings with column text titles.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5593 * count: The number of columns (this should match the arrays).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5594 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5595 int dw_filesystem_setup(HWND handle, unsigned long *flags, char **titles, int count)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5596 {
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5597 char **newtitles = malloc(sizeof(char *) * (count + 1));
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5598 unsigned long *newflags = malloc(sizeof(unsigned long) * (count + 1));
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5599
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5600 newtitles[0] = "Filename";
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5601 newflags[0] = DW_CFA_STRINGANDICON | DW_CFA_LEFT | DW_CFA_HORZSEPARATOR;
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5602
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5603 memcpy(&newtitles[1], titles, sizeof(char *) * count);
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5604 memcpy(&newflags[1], flags, sizeof(unsigned long) * count);
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5605
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5606 _dw_container_setup(handle, newflags, newtitles, count + 1, 1, 1);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5607
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5608 if ( newtitles) free(newtitles);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5609 if ( newflags ) free(newflags);
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
5610 return DW_ERROR_NONE;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5611 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5612
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5613 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5614 * Obtains an icon from a module (or header in GTK).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5615 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5616 * module: Handle to module (DLL) in OS/2 and Windows.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5617 * id: A unsigned long id int the resources on OS/2 and
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5618 * Windows, on GTK this is converted to a pointer
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5619 * to an embedded XPM.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5620 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5621 HICN dw_icon_load(unsigned long module, unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5622 {
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5623 return (HICN)id;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5624 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5625
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5626 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5627 * Obtains an icon from a file.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5628 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5629 * filename: Name of the file, omit extention to have
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5630 * DW pick the appropriate file extension.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5631 * (ICO on OS/2 or Windows, XPM on Unix)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5632 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5633 HICN API dw_icon_load_from_file(char *filename)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5634 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5635 int _locked_by_me = FALSE;
1258
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
5636 char *file = alloca(strlen(filename) + 6);
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5637 int i, found_ext = 0;
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5638 HICN ret = 0;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5639
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5640 if (!file)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5641 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5642
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5643 strcpy(file, filename);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5644
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5645 /* check if we can read from this file (it exists and read permission) */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5646 if (access(file, 04) != 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5647 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5648 /* Try with various extentions */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5649 for ( i = 0; i < NUM_EXTS; i++ )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5650 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5651 strcpy( file, filename );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5652 strcat( file, image_exts[i] );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5653 if ( access( file, 04 ) == 0 )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5654 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5655 found_ext = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5656 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5657 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5658 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5659 if ( found_ext == 0 )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5660 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5661 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5662 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5663 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5664
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5665 DW_MUTEX_LOCK;
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5666 ret = gdk_pixbuf_new_from_file(file, NULL);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5667 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5668 return ret;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5669 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5670
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5671 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5672 * Obtains an icon from data.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5673 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5674 * data: Source of data for image.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5675 * len: length of data
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5676 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5677 HICN API dw_icon_load_from_data(char *data, int len)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5678 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5679 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5680 char *file;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5681 FILE *fp;
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5682 HICN ret = 0;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5683
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5684 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5685 * A real hack; create a temporary file and write the contents
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5686 * of the data to the file
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5687 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5688 file = tmpnam( NULL );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5689 fp = fopen( file, "wb" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5690 if ( fp )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5691 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5692 fwrite( data, len, 1, fp );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5693 fclose( fp );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5694 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5695 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5696 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5697 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5698 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5699 DW_MUTEX_LOCK;
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5700 ret = gdk_pixbuf_new_from_file(file, NULL);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5701 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5702 return ret;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5703 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5704
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5705 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5706 * Frees a loaded resource in OS/2 and Windows.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5707 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5708 * handle: Handle to icon returned by dw_icon_load().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5709 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5710 void dw_icon_free(HICN handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5711 {
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
5712 int iicon = GPOINTER_TO_INT(handle);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5713
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5714 if(iicon > 65535)
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5715 {
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5716 g_object_unref(handle);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5717 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5718 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5719
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5720 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5721 * Allocates memory used to populate a container.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5722 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5723 * handle: Handle to the container window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5724 * rowcount: The number of items to be populated.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5725 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5726 void *dw_container_alloc(HWND handle, int rowcount)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5727 {
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5728 int z, prevrowcount = 0;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5729 GtkWidget *cont;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5730 GtkListStore *store = NULL;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5731 int _locked_by_me = FALSE;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5732
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5733 DW_MUTEX_LOCK;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5734 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5735
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5736 /* Make sure it is the correct tree type */
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5737 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5738 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5739
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5740 if(store)
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5741 {
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5742 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5743
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
5744 prevrowcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5745
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5746 for(z=0;z<rowcount;z++)
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5747 {
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5748 gtk_list_store_append(store, &iter);
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5749 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5750 g_object_set_data(G_OBJECT(cont), "_dw_insertpos", GINT_TO_POINTER(prevrowcount));
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5751 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(rowcount + prevrowcount));
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5752 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5753 DW_MUTEX_UNLOCK;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5754 return (void *)cont;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5755 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5756
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5757 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5758 * Internal representation of dw_container_set_item() extracted so we can pass
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5759 * two data pointers; icon and text for dw_filesystem_set_item().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5760 */
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5761 void _dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data)
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5762 {
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5763 char numbuf[20], textbuffer[100];
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5764 int flag = 0;
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5765 GtkWidget *cont;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5766 GtkListStore *store = NULL;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5767 int _locked_by_me = FALSE;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5768
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5769 DW_MUTEX_LOCK;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5770 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5771
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5772 /* Make sure it is the correct tree type */
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5773 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5774 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5775
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5776 if(store)
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5777 {
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5778 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5779
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5780 sprintf(numbuf, "_dw_cont_col%d", column);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
5781 flag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), numbuf));
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5782 if(pointer)
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5783 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
5784 row += GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_insertpos"));
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5785 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5786
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5787 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, row))
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5788 {
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5789 if(flag & DW_CFA_STRINGANDICON)
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5790 {
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5791 void **thisdata = (void **)data;
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5792 HICN hicon = *((HICN *)thisdata[0]);
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5793 char *tmp = (char *)thisdata[1];
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5794 GdkPixbuf *pixbuf = _find_pixbuf(hicon, NULL, NULL);
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5795
1287
57ce07fbec45 Allow passing 0 as icon handle to remove container icon on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1283
diff changeset
5796 gtk_list_store_set(store, &iter, 1, pixbuf, -1);
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5797 gtk_list_store_set(store, &iter, 2, tmp, -1);
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5798 }
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5799 else if(flag & DW_CFA_BITMAPORICON)
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5800 {
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5801 HICN hicon = *((HICN *)data);
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5802 GdkPixbuf *pixbuf = _find_pixbuf(hicon, NULL, NULL);
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5803
1287
57ce07fbec45 Allow passing 0 as icon handle to remove container icon on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1283
diff changeset
5804 gtk_list_store_set(store, &iter, column + 2, pixbuf, -1);
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5805 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5806 else if(flag & DW_CFA_STRING)
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5807 {
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5808 char *tmp = *((char **)data);
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5809 gtk_list_store_set(store, &iter, column + 2, tmp, -1);
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5810 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5811 else if(flag & DW_CFA_ULONG)
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5812 {
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5813 ULONG tmp = *((ULONG *)data);
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5814
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5815 gtk_list_store_set(store, &iter, column + 2, tmp, -1);
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5816 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5817 else if(flag & DW_CFA_DATE)
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5818 {
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5819 struct tm curtm;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5820 CDATE cdate = *((CDATE *)data);
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5821
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5822 memset( &curtm, 0, sizeof(curtm) );
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5823 curtm.tm_mday = cdate.day;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5824 curtm.tm_mon = cdate.month - 1;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5825 curtm.tm_year = cdate.year - 1900;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5826
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5827 strftime(textbuffer, 100, "%x", &curtm);
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5828
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5829 gtk_list_store_set(store, &iter, column + 2, textbuffer, -1);
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5830 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5831 else if(flag & DW_CFA_TIME)
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5832 {
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5833 struct tm curtm;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5834 CTIME ctime = *((CTIME *)data);
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5835
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5836 memset( &curtm, 0, sizeof(curtm) );
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5837 curtm.tm_hour = ctime.hours;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5838 curtm.tm_min = ctime.minutes;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5839 curtm.tm_sec = ctime.seconds;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5840
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5841 strftime(textbuffer, 100, "%X", &curtm);
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5842
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5843 gtk_list_store_set(store, &iter, column + 2, textbuffer, -1);
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5844 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5845 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5846 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5847 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5848 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5849
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5850 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5851 * Sets an item in specified row and column to the given data.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5852 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5853 * handle: Handle to the container window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5854 * pointer: Pointer to the allocated memory in dw_container_alloc().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5855 * column: Zero based column of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5856 * row: Zero based row of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5857 * data: Pointer to the data to be added.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5858 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5859 void dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5860 {
835
82072ff08513 Removed some GTK_IS_TREE_VIEW checks that were erroneously dropping out of valid requests.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 830
diff changeset
5861 _dw_container_set_item(handle, pointer, column, row, data);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5862 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5863
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5864 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5865 * Changes an existing item in specified row and column to the given data.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5866 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5867 * handle: Handle to the container window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5868 * column: Zero based column of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5869 * row: Zero based row of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5870 * data: Pointer to the data to be added.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5871 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5872 void dw_container_change_item(HWND handle, int column, int row, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5873 {
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5874 _dw_container_set_item(handle, NULL, column, row, data);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5875 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5876
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5877 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5878 * Changes an existing item in specified row and column to the given data.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5879 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5880 * handle: Handle to the container window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5881 * column: Zero based column of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5882 * row: Zero based row of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5883 * data: Pointer to the data to be added.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5884 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5885 void API dw_filesystem_change_item(HWND handle, int column, int row, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5886 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5887 dw_filesystem_set_item(handle, NULL, column, row, data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5888 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5889
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5890 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5891 * Changes an item in specified row and column to the given data.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5892 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5893 * handle: Handle to the container window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5894 * pointer: Pointer to the allocated memory in dw_container_alloc().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5895 * column: Zero based column of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5896 * row: Zero based row of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5897 * data: Pointer to the data to be added.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5898 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5899 void API dw_filesystem_change_file(HWND handle, int row, char *filename, HICN icon)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5900 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5901 dw_filesystem_set_file(handle, NULL, row, filename, icon);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5902 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5903
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5904 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5905 * Sets an item in specified row and column to the given data.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5906 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5907 * handle: Handle to the container window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5908 * pointer: Pointer to the allocated memory in dw_container_alloc().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5909 * column: Zero based column of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5910 * row: Zero based row of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5911 * data: Pointer to the data to be added.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5912 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5913 void dw_filesystem_set_file(HWND handle, void *pointer, int row, char *filename, HICN icon)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5914 {
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5915 void *data[2] = { (void *)&icon, (void *)filename };
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5916
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5917 _dw_container_set_item(handle, pointer, 0, row, (void *)data);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5918 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5919
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5920 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5921 * Sets an item in specified row and column to the given data.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5922 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5923 * handle: Handle to the container window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5924 * pointer: Pointer to the allocated memory in dw_container_alloc().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5925 * column: Zero based column of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5926 * row: Zero based row of data being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5927 * data: Pointer to the data to be added.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5928 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5929 void dw_filesystem_set_item(HWND handle, void *pointer, int column, int row, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5930 {
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5931 _dw_container_set_item(handle, pointer, column + 1, row, data);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5932 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5933
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5934 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5935 * Gets column type for a container column
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5936 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5937 * handle: Handle to the container window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5938 * column: Zero based column.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5939 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5940 int dw_container_get_column_type(HWND handle, int column)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5941 {
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5942 char numbuf[20];
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
5943 int flag, rc = 0;
786
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
5944 GtkWidget *cont = handle;
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5945 int _locked_by_me = FALSE;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5946
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5947 DW_MUTEX_LOCK;
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5948 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5949 if(!cont)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5950 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5951 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5952 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5953 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5954
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5955 sprintf(numbuf, "_dw_cont_col%d", column);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
5956 flag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), numbuf));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5957
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5958 if(flag & DW_CFA_BITMAPORICON)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5959 rc = DW_CFA_BITMAPORICON;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5960 else if(flag & DW_CFA_STRING)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5961 rc = DW_CFA_STRING;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5962 else if(flag & DW_CFA_ULONG)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5963 rc = DW_CFA_ULONG;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5964 else if(flag & DW_CFA_DATE)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5965 rc = DW_CFA_DATE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5966 else if(flag & DW_CFA_TIME)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5967 rc = DW_CFA_TIME;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5968 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5969 rc = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5970 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5971 return rc;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5972 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5973
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5974 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5975 * Gets column type for a filesystem container column
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5976 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5977 * handle: Handle to the container window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5978 * column: Zero based column.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5979 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5980 int API dw_filesystem_get_column_type(HWND handle, int column)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5981 {
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
5982 return dw_container_get_column_type( handle, column + 1 );
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5983 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5984
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5985 /*
1207
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5986 * Sets the alternating row colors for container window (widget) handle.
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5987 * Parameters:
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5988 * handle: The window (widget) handle.
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5989 * oddcolor: Odd row background color in DW_RGB format or a default color index.
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5990 * evencolor: Even row background color in DW_RGB format or a default color index.
1211
70dca53cb071 Updated GTK3 with the behavior change just commited for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1207
diff changeset
5991 * DW_RGB_TRANSPARENT will disable coloring rows.
70dca53cb071 Updated GTK3 with the behavior change just commited for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1207
diff changeset
5992 * DW_CLR_DEFAULT will use the system default alternating row colors.
1207
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5993 */
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5994 void API dw_container_set_row_bg(HWND handle, unsigned long oddcolor, unsigned long evencolor)
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5995 {
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5996 GtkWidget *cont;
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5997 int _locked_by_me = FALSE;
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5998 DW_MUTEX_LOCK;
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
5999 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6000
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6001 /* Make sure it is the correct tree type */
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6002 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6003 {
1211
70dca53cb071 Updated GTK3 with the behavior change just commited for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1207
diff changeset
6004 if(oddcolor == DW_RGB_TRANSPARENT && evencolor == DW_RGB_TRANSPARENT)
1207
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6005 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(cont), FALSE);
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6006 else
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6007 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(cont), TRUE);
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6008 }
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6009 DW_MUTEX_UNLOCK;
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6010 }
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6011
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6012 /*
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6013 * Sets the width of a column in the container.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6014 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6015 * handle: Handle to window (widget) of container.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6016 * column: Zero based column of width being set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6017 * width: Width of column in pixels.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6018 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6019 void dw_container_set_column_width(HWND handle, int column, int width)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6020 {
830
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6021 GtkWidget *cont;
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6022 int _locked_by_me = FALSE;
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6023
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6024 DW_MUTEX_LOCK;
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6025 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
1207
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6026
830
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6027 /* Make sure it is the correct tree type */
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6028 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6029 {
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6030 GtkTreeViewColumn *col = gtk_tree_view_get_column(GTK_TREE_VIEW(cont), column);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6031
830
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6032 if(col && GTK_IS_TREE_VIEW_COLUMN(col))
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6033 {
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6034 gtk_tree_view_column_set_fixed_width(GTK_TREE_VIEW_COLUMN(col), width);
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6035 }
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6036 }
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6037 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6038 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6039
820
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6040 /* Internal version for both */
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6041 void _dw_container_set_row_title(HWND handle, void *pointer, int row, char *title)
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6042 {
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6043 GtkWidget *cont = handle;
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6044 GtkListStore *store = NULL;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6045 int _locked_by_me = FALSE;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6046
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6047 DW_MUTEX_LOCK;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6048 /* Make sure it is the correct tree type */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6049 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6050 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6051
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6052 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6053 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6054 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6055
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6056 if(pointer)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6057 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
6058 row += GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_insertpos"));
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6059 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6060
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6061 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, row))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6062 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6063 gtk_list_store_set(store, &iter, 0, (gpointer)title, -1);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6064 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6065 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6066 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6067 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6068
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6069 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6070 * Sets the title of a row in the container.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6071 * Parameters:
820
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6072 * pointer: Pointer to the allocated memory in dw_container_alloc().
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6073 * row: Zero based row of data being set.
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6074 * title: String title of the item.
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6075 */
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6076 void dw_container_set_row_title(void *pointer, int row, char *title)
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6077 {
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6078 _dw_container_set_row_title(pointer, pointer, row, title);
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6079 }
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6080
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6081 /*
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6082 * Changes the title of a row already inserted in the container.
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6083 * Parameters:
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6084 * handle: Handle to window (widget) of container.
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6085 * row: Zero based row of data being set.
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6086 * title: String title of the item.
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6087 */
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6088 void dw_container_change_row_title(HWND handle, int row, char *title)
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6089 {
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6090 _dw_container_set_row_title(handle, NULL, row, title);
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6091 }
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6092
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6093 /*
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6094 * Sets the title of a row in the container.
19a632499344 GTK2/3 changes for similar dw_container_set_item() and dw_container_change_item() misbehavior.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 818
diff changeset
6095 * Parameters:
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6096 * handle: Handle to the container window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6097 * pointer: Pointer to the allocated memory in dw_container_alloc().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6098 * rowcount: The number of rows to be inserted.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6099 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6100 void dw_container_insert(HWND handle, void *pointer, int rowcount)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6101 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6102 /* Don't need to do anything here */
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6103 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6104
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6105 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6106 * Removes the first x rows from a container.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6107 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6108 * handle: Handle to the window (widget) to be deleted from.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6109 * rowcount: The number of rows to be deleted.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6110 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6111 void dw_container_delete(HWND handle, int rowcount)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6112 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6113 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6114 GtkListStore *store = NULL;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6115 int _locked_by_me = FALSE;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6116
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6117 DW_MUTEX_LOCK;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6118 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6119
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6120 /* Make sure it is the correct tree type */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6121 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6122 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6123
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6124 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6125 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6126 GtkTreeIter iter;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6127 int rows, z;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6128
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
6129 rows = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6130
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6131 for(z=0;z<rowcount;z++)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6132 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6133 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, 0))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6134 gtk_list_store_remove(store, &iter);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6135 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6136
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6137 if(rows - rowcount < 0)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6138 rows = 0;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6139 else
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6140 rows -= rowcount;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6141
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6142 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(rows));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6143 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6144 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6145 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6146
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6147 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6148 * Removes all rows from a container.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6149 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6150 * handle: Handle to the window (widget) to be cleared.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6151 * redraw: TRUE to cause the container to redraw immediately.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6152 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6153 void dw_container_clear(HWND handle, int redraw)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6154 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6155 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6156 GtkListStore *store = NULL;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6157 int _locked_by_me = FALSE;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6158
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6159 DW_MUTEX_LOCK;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6160 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6161
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6162 /* Make sure it is the correct tree type */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6163 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6164 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6165
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6166 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6167 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6168 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(0));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6169 g_object_set_data(G_OBJECT(cont), "_dw_insertpos", GINT_TO_POINTER(0));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6170
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6171 gtk_list_store_clear(store);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6172 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6173 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6174 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6175
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6176 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6177 * Scrolls container up or down.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6178 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6179 * handle: Handle to the window (widget) to be scrolled.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6180 * direction: DW_SCROLL_UP, DW_SCROLL_DOWN, DW_SCROLL_TOP or
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6181 * DW_SCROLL_BOTTOM. (rows is ignored for last two)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6182 * rows: The number of rows to be scrolled.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6183 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6184 void dw_container_scroll(HWND handle, int direction, long rows)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6185 {
861
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6186 GtkWidget *cont;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6187 int _locked_by_me = FALSE;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6188
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6189 DW_MUTEX_LOCK;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6190 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6191
861
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6192 /* Make sure it is the correct tree type */
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6193 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6194 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6195 GtkAdjustment *adjust = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(cont));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6196
861
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6197 if(adjust)
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6198 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
6199 gint rowcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
861
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6200 gdouble currpos = gtk_adjustment_get_value(adjust);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6201 gdouble upper = gtk_adjustment_get_upper(adjust);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6202 gdouble lower = gtk_adjustment_get_lower(adjust);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6203 gdouble change;
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6204
861
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6205 /* Safety check */
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6206 if(rowcount < 1)
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6207 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6208 DW_MUTEX_UNLOCK;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6209 return;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6210 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6211
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6212 change = ((gdouble)rows/(gdouble)rowcount) * (upper - lower);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6213
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6214 switch(direction)
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6215 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6216 case DW_SCROLL_TOP:
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6217 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6218 gtk_adjustment_set_value(adjust, lower);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6219 break;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6220 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6221 case DW_SCROLL_BOTTOM:
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6222 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6223 gtk_adjustment_set_value(adjust, upper);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6224 break;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6225 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6226 case DW_SCROLL_UP:
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6227 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6228 gdouble newpos = currpos - change;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6229 if(newpos < lower)
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6230 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6231 newpos = lower;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6232 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6233 gtk_adjustment_set_value(adjust, newpos);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6234 break;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6235 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6236 case DW_SCROLL_DOWN:
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6237 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6238 gdouble newpos = currpos + change;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6239 if(newpos > upper)
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6240 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6241 newpos = upper;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6242 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6243 gtk_adjustment_set_value(adjust, newpos);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6244 break;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6245 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6246 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6247 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6248 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6249 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6250 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6251
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6252 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6253 * Starts a new query of a container.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6254 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6255 * handle: Handle to the window (widget) to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6256 * flags: If this parameter is DW_CRA_SELECTED it will only
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6257 * return items that are currently selected. Otherwise
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6258 * it will return all records in the container.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6259 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6260 char *dw_container_query_start(HWND handle, unsigned long flags)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6261 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6262 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6263 GtkListStore *store = NULL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6264 char *retval = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6265 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6266
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6267 DW_MUTEX_LOCK;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6268 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6269
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6270 /* Make sure it is the correct tree type */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6271 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6272 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6273
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6274 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6275 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6276 /* These should be separate but right now this will work */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6277 if(flags & DW_CRA_SELECTED)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6278 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6279 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(cont));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6280 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6281 if(list)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6282 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6283 GtkTreePath *path = g_list_nth_data(list, 0);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6284
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6285 if(path)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6286 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6287 gint *indices = gtk_tree_path_get_indices(path);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6288
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6289 if(indices)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6290 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6291 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6292
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6293 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, indices[0]))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6294 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6295 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 0, &retval, -1);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6296 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(1));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6297 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6298 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6299 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6300 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6301 g_list_free(list);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6302 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6303 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6304 else if(flags & DW_CRA_CURSORED)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6305 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6306 GtkTreePath *path;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6307
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6308 gtk_tree_view_get_cursor(GTK_TREE_VIEW(cont), &path, NULL);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6309 if(path)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6310 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6311 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6312
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6313 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6314 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6315 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 0, &retval, -1);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6316 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6317 gtk_tree_path_free(path);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6318 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6319 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6320 else
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6321 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6322 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6323
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6324 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, 0))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6325 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6326 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 0, &retval, -1);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6327 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(1));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6328 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6329 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6330 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6331 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6332 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6333 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6334
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6335 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6336 * Continues an existing query of a container.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6337 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6338 * handle: Handle to the window (widget) to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6339 * flags: If this parameter is DW_CRA_SELECTED it will only
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6340 * return items that are currently selected. Otherwise
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6341 * it will return all records in the container.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6342 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6343 char *dw_container_query_next(HWND handle, unsigned long flags)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6344 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6345 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6346 GtkListStore *store = NULL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6347 char *retval = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6348 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6349
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6350 DW_MUTEX_LOCK;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6351 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6352
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6353 /* Make sure it is the correct tree type */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6354 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6355 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6356
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6357 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6358 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
6359 int pos = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_querypos"));
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6360 int count = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6361
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6362 /* These should be separate but right now this will work */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6363 if(flags & DW_CRA_SELECTED)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6364 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6365 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(cont));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6366 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6367
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6368 if(list)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6369 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6370 GtkTreePath *path = g_list_nth_data(list, pos);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6371
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6372 if(path)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6373 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6374 gint *indices = gtk_tree_path_get_indices(path);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6375
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6376 if(indices)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6377 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6378 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6379
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6380 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, indices[0]))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6381 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6382 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 0, &retval, -1);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6383 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(pos+1));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6384 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6385 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6386 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6387 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6388 g_list_free(list);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6389 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6390 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6391 else if(flags & DW_CRA_CURSORED)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6392 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6393 /* There will only be one item cursored,
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6394 * retrieve it with dw_container_query_start()
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6395 */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6396 retval = NULL;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6397 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6398 else
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6399 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6400 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6401
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6402 if(pos < count && gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, pos))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6403 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6404 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 0, &retval, -1);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6405 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(pos+1));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6406 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6407 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6408 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6409 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6410 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6411 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6412
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6413 int _find_iter(GtkListStore *store, GtkTreeIter *iter, char *text)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6414 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6415 int z, rows = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6416 char *thistext;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6417
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6418 for(z=0;z<rows;z++)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6419 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6420 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), iter, NULL, z))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6421 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6422 gtk_tree_model_get(GTK_TREE_MODEL(store), iter, 0, &thistext, -1);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6423 if(thistext == text)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6424 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6425 return TRUE;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6426 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6427 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6428 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6429 return FALSE;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6430 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6431
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6432 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6433 * Cursors the item with the text speficied, and scrolls to that item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6434 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6435 * handle: Handle to the window (widget) to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6436 * text: Text usually returned by dw_container_query().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6437 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6438 void dw_container_cursor(HWND handle, char *text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6439 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6440 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6441 GtkListStore *store = NULL;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6442 int _locked_by_me = FALSE;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6443
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6444 DW_MUTEX_LOCK;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6445 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6446
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6447 /* Make sure it is the correct tree type */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6448 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6449 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6450
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6451 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6452 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6453 GtkTreeIter iter;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6454
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6455 if(_find_iter(store, &iter, text))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6456 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6457 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6458
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6459 if(path)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6460 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6461 gtk_tree_view_row_activated(GTK_TREE_VIEW(cont), path, NULL);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6462 gtk_tree_path_free(path);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6463 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6464 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6465 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6466 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6467 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6468
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6469 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6470 * Deletes the item with the text speficied.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6471 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6472 * handle: Handle to the window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6473 * text: Text usually returned by dw_container_query().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6474 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6475 void dw_container_delete_row(HWND handle, char *text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6476 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6477 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6478 GtkListStore *store = NULL;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6479 int _locked_by_me = FALSE;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6480
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6481 DW_MUTEX_LOCK;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6482 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6483
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6484 /* Make sure it is the correct tree type */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6485 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6486 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6487
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6488 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6489 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6490 GtkTreeIter iter;
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
6491 int rows = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6492
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6493 if(_find_iter(store, &iter, text))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6494 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6495 gtk_list_store_remove(store, &iter);
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6496 rows--;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6497 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6498
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6499 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(rows));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6500 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6501 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6502 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6503
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6504 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6505 * Optimizes the column widths so that all data is visible.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6506 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6507 * handle: Handle to the window (widget) to be optimized.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6508 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6509 void dw_container_optimize(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6510 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6511 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6512 int _locked_by_me = FALSE;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6513
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6514 DW_MUTEX_LOCK;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6515 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6516
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6517 /* Make sure it is the correct tree type */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6518 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6519 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(cont));
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6520 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6521 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6522
1223
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6523 /* Translate the status message into a message on our buddy window */
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6524 static void _status_translate(GtkStatusIcon *status_icon, guint button, guint activate_time, gpointer user_data)
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6525 {
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6526 GdkEventButton event = { 0 };
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6527 long x, y;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6528 gboolean retval;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6529
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6530 dw_pointer_query_pos(&x, &y);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6531
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6532 event.button = button;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6533 event.x = x;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6534 event.y = y;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6535
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6536 g_signal_emit_by_name(G_OBJECT(user_data), "button_press_event", &event, &retval);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6537 }
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6538
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6539 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6540 * Inserts an icon into the taskbar.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6541 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6542 * handle: Window handle that will handle taskbar icon messages.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6543 * icon: Icon handle to display in the taskbar.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6544 * bubbletext: Text to show when the mouse is above the icon.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6545 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6546 void dw_taskbar_insert(HWND handle, HICN icon, char *bubbletext)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6547 {
1223
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6548 GtkStatusIcon *status;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6549 GdkPixbuf *pixbuf;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6550 int _locked_by_me = FALSE;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6551
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6552 DW_MUTEX_LOCK;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6553 pixbuf = _find_pixbuf(icon, NULL, NULL);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6554 status = gtk_status_icon_new_from_pixbuf(pixbuf);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6555 if(bubbletext)
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6556 gtk_status_icon_set_tooltip_text(status, bubbletext);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6557 g_object_set_data(G_OBJECT(handle), "_dw_taskbar", status);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6558 g_signal_connect(G_OBJECT (status), "popup-menu", G_CALLBACK (_status_translate), handle);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6559 gtk_status_icon_set_visible(status, TRUE);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6560 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6561 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6562
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6563 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6564 * Deletes an icon from the taskbar.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6565 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6566 * handle: Window handle that was used with dw_taskbar_insert().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6567 * icon: Icon handle that was used with dw_taskbar_insert().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6568 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6569 void dw_taskbar_delete(HWND handle, HICN icon)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6570 {
1223
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6571 GtkStatusIcon *status;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6572 int _locked_by_me = FALSE;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6573
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6574 DW_MUTEX_LOCK;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6575 status = g_object_get_data(G_OBJECT(handle), "_dw_taskbar");
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6576 g_object_unref(G_OBJECT(status));
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6577 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6578 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6579
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6580 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6581 * Creates a rendering context widget (window) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6582 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6583 * id: An id to be used with dw_window_from_id.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6584 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6585 * A handle to the widget or NULL on failure.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6586 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6587 HWND dw_render_new(unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6588 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6589 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6590 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6591
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6592 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6593 tmp = gtk_drawing_area_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6594 gtk_widget_set_events(tmp, GDK_EXPOSURE_MASK
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6595 | GDK_LEAVE_NOTIFY_MASK
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6596 | GDK_BUTTON_PRESS_MASK
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6597 | GDK_BUTTON_RELEASE_MASK
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6598 | GDK_KEY_PRESS_MASK
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6599 | GDK_POINTER_MOTION_MASK
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6600 | GDK_POINTER_MOTION_HINT_MASK);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6601 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6602 gtk_widget_set_can_focus(tmp, TRUE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6603 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6604 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6605 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6606 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6607
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6608 /* Returns a GdkColor from a DW color */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6609 static GdkColor _internal_color(unsigned long value)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6610 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6611 if(DW_RGB_COLOR & value)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6612 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6613 GdkColor color = { 0, DW_RED_VALUE(value) << 8, DW_GREEN_VALUE(value) << 8, DW_BLUE_VALUE(value) << 8 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6614 return color;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6615 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6616 if (value < 16)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6617 return _colors[value];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6618 return _colors[0];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6619 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6620
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6621 /* Sets the current foreground drawing color.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6622 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6623 * red: red value.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6624 * green: green value.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6625 * blue: blue value.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6626 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6627 void dw_color_foreground_set(unsigned long value)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6628 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6629 GdkColor color = _internal_color(value);
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6630 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6631
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6632 *foreground = color;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6633 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6634
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6635 /* Sets the current background drawing color.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6636 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6637 * red: red value.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6638 * green: green value.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6639 * blue: blue value.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6640 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6641 void dw_color_background_set(unsigned long value)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6642 {
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6643 GdkColor *background = pthread_getspecific(_dw_bg_color_key);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6644
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6645 if(value == DW_CLR_DEFAULT)
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6646 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6647 if(background)
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6648 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6649 pthread_setspecific(_dw_bg_color_key, NULL);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6650 free(background);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6651 }
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6652 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6653 else
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6654 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6655 GdkColor color = _internal_color(value);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6656
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6657 if(!background)
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6658 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6659 background = malloc(sizeof(GdkColor));
972
32830f1683c9 Fixed an issue where dw_color_background_set() would not function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 971
diff changeset
6660 pthread_setspecific(_dw_bg_color_key, background);
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6661 }
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6662 *background = color;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6663 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6664 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6665
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6666 /* Internal function to handle the color OK press */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6667 static gint _gtk_color_ok(GtkWidget *widget, DWDialog *dwwait)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6668 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6669 GdkColor color;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6670 unsigned long dw_color;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6671 GtkColorSelection *colorsel;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6672
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6673 if(!dwwait)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6674 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6675
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6676 colorsel = (GtkColorSelection *)gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(dwwait->data));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6677 gtk_color_selection_get_current_color(colorsel, &color);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6678 gtk_widget_destroy(GTK_WIDGET(dwwait->data));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6679 _dw_color_active = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6680 dw_color = DW_RGB( (color.red & 0xFF), (color.green & 0xFF), (color.blue & 0xFF));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6681 dw_dialog_dismiss(dwwait, (void *)dw_color);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6682 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6683 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6684
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6685 /* Internal function to handle the color Cancel press */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6686 static gint _gtk_color_cancel(GtkWidget *widget, DWDialog *dwwait)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6687 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6688 if(!dwwait)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6689 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6690
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6691 gtk_widget_destroy(GTK_WIDGET(dwwait->data));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6692 _dw_color_active = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6693 dw_dialog_dismiss(dwwait, (void *)-1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6694 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6695 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6696
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6697 /* Allows the user to choose a color using the system's color chooser dialog.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6698 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6699 * value: current color
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6700 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6701 * The selected color or the current color if cancelled.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6702 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6703 unsigned long API dw_color_choose(unsigned long value)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6704 {
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
6705 GtkWidget *colorw, *ok_button, *cancel_button;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6706 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6707 DWDialog *dwwait;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6708 GtkColorSelection *colorsel;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6709 GdkColor color = _internal_color(value);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6710 unsigned long dw_color;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6711
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6712 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6713
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6714 /* The DW mutex should be sufficient for
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6715 * insuring no thread changes this unknowingly.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6716 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6717 if(_dw_color_active)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6718 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6719 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6720 return value;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6721 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6722
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6723 _dw_color_active = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6724
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6725 colorw = gtk_color_selection_dialog_new("Select Color");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6726
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6727 dwwait = dw_dialog_new((void *)colorw);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6728
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6729 colorsel = (GtkColorSelection *)gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(colorw));
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
6730 g_object_get(G_OBJECT(colorw), "ok-button", &ok_button, "cancel-button", &cancel_button, NULL);
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
6731 g_signal_connect(G_OBJECT(ok_button), "clicked", G_CALLBACK(_gtk_color_ok), dwwait);
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
6732 g_signal_connect(G_OBJECT(cancel_button), "clicked", G_CALLBACK(_gtk_color_cancel), dwwait);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6733
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6734 gtk_color_selection_set_previous_color(colorsel,&color);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6735 gtk_color_selection_set_current_color(colorsel,&color);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6736 gtk_color_selection_set_has_palette(colorsel,TRUE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6737
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6738 gtk_widget_show(colorw);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6739
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6740 dw_color = (unsigned long)dw_dialog_wait(dwwait);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6741 if ((unsigned long)dw_color == -1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6742 dw_color = value;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6743 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6744 return (unsigned long)dw_color;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6745 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6746 dw_messagebox("Not implemented", DW_MB_OK|DW_MB_INFORMATION, "This feature not yet supported.");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6747 return value;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6748 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6749 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6750
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6751 /* Draw a point on a window (preferably a render window).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6752 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6753 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6754 * pixmap: Handle to the pixmap. (choose only one of these)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6755 * x: X coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6756 * y: Y coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6757 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6758 void dw_draw_point(HWND handle, HPIXMAP pixmap, int x, int y)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6759 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6760 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6761 cairo_t *cr = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6762
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6763 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6764 if(handle)
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6765 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6766 GdkWindow *window = gtk_widget_get_window(handle);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6767 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6768 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6769 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6770 DW_MUTEX_UNLOCK;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6771 return;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6772 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6773 cr = gdk_cairo_create(window);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6774 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6775 else if(pixmap)
815
c1e93dd575a5 Initial implementation of a slightly disjointed dual cairo_surface gdkpixbuf image model.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 814
diff changeset
6776 cr = cairo_create(pixmap->image);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6777 if(cr)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6778 {
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6779 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6780
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6781 gdk_cairo_set_source_color (cr, foreground);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6782 cairo_set_line_width(cr, 1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6783 cairo_move_to(cr, x, y);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6784 cairo_stroke(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6785 cairo_destroy(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6786 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6787 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6788 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6789
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6790 /* Draw a line on a window (preferably a render window).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6791 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6792 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6793 * pixmap: Handle to the pixmap. (choose only one of these)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6794 * x1: First X coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6795 * y1: First Y coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6796 * x2: Second X coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6797 * y2: Second Y coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6798 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6799 void dw_draw_line(HWND handle, HPIXMAP pixmap, int x1, int y1, int x2, int y2)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6800 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6801 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6802 cairo_t *cr = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6803
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6804 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6805 if(handle)
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6806 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6807 GdkWindow *window = gtk_widget_get_window(handle);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6808 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6809 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6810 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6811 DW_MUTEX_UNLOCK;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6812 return;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6813 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6814 cr = gdk_cairo_create(window);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6815 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6816 else if(pixmap)
815
c1e93dd575a5 Initial implementation of a slightly disjointed dual cairo_surface gdkpixbuf image model.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 814
diff changeset
6817 cr = cairo_create(pixmap->image);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6818 if(cr)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6819 {
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6820 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6821
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6822 gdk_cairo_set_source_color (cr, foreground);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6823 cairo_set_line_width(cr, 1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6824 cairo_move_to(cr, x1, y1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6825 cairo_line_to(cr, x2, y2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6826 cairo_stroke(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6827 cairo_destroy(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6828 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6829 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6830 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6831
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6832 /* Draw a closed polygon on a window (preferably a render window).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6833 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6834 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6835 * pixmap: Handle to the pixmap. (choose only one of these)
1275
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1271
diff changeset
6836 * flags: DW_DRAW_FILL (1) to fill the polygon or DW_DRAW_DEFAULT (0).
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6837 * number of points
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6838 * x[]: X coordinates.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6839 * y[]: Y coordinates.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6840 */
1275
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1271
diff changeset
6841 void dw_draw_polygon(HWND handle, HPIXMAP pixmap, int flags, int npoints, int *x, int *y)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6842 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6843 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6844 cairo_t *cr = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6845 int z;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6846
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6847 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6848 if(handle)
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6849 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6850 GdkWindow *window = gtk_widget_get_window(handle);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6851 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6852 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6853 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6854 DW_MUTEX_UNLOCK;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6855 return;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6856 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6857 cr = gdk_cairo_create(window);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6858 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6859 else if(pixmap)
815
c1e93dd575a5 Initial implementation of a slightly disjointed dual cairo_surface gdkpixbuf image model.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 814
diff changeset
6860 cr = cairo_create(pixmap->image);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6861 if(cr)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6862 {
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6863 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6864
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6865 gdk_cairo_set_source_color (cr, foreground);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6866 cairo_set_line_width(cr, 1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6867 cairo_move_to(cr, x[0], y[0]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6868 for(z=1;z<npoints;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6869 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6870 cairo_line_to(cr, x[z], y[z]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6871 }
1275
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1271
diff changeset
6872 if(flags & DW_DRAW_FILL)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6873 cairo_fill(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6874 cairo_stroke(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6875 cairo_destroy(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6876 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6877 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6878 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6879
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6880 /* Draw a rectangle on a window (preferably a render window).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6881 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6882 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6883 * pixmap: Handle to the pixmap. (choose only one of these)
1275
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1271
diff changeset
6884 * flags: DW_DRAW_FILL (1) to fill the box or DW_DRAW_DEFAULT (0).
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6885 * x: X coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6886 * y: Y coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6887 * width: Width of rectangle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6888 * height: Height of rectangle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6889 */
1275
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1271
diff changeset
6890 void dw_draw_rect(HWND handle, HPIXMAP pixmap, int flags, int x, int y, int width, int height)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6891 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6892 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6893 cairo_t *cr = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6894
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6895 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6896 if(handle)
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6897 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6898 GdkWindow *window = gtk_widget_get_window(handle);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6899 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6900 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6901 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6902 DW_MUTEX_UNLOCK;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6903 return;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6904 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6905 cr = gdk_cairo_create(window);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6906 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6907 else if(pixmap)
815
c1e93dd575a5 Initial implementation of a slightly disjointed dual cairo_surface gdkpixbuf image model.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 814
diff changeset
6908 cr = cairo_create(pixmap->image);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6909 if(cr)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6910 {
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6911 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6912
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6913 gdk_cairo_set_source_color (cr, foreground);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6914 cairo_set_line_width(cr, 1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6915 cairo_move_to(cr, x, y);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6916 cairo_line_to(cr, x, y + height);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6917 cairo_line_to(cr, x + width, y + height);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6918 cairo_line_to(cr, x + width, y);
1275
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1271
diff changeset
6919 if(flags & DW_DRAW_FILL)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6920 cairo_fill(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6921 cairo_stroke(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6922 cairo_destroy(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6923 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6924 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6925 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6926
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6927 /* Draw an arc on a window (preferably a render window).
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6928 * Parameters:
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6929 * handle: Handle to the window.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6930 * pixmap: Handle to the pixmap. (choose only one of these)
1275
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1271
diff changeset
6931 * flags: DW_DRAW_FILL (1) to fill the arc or DW_DRAW_DEFAULT (0).
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1271
diff changeset
6932 * DW_DRAW_FULL will draw a complete circle/elipse.
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6933 * xorigin: X coordinate of center of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6934 * yorigin: Y coordinate of center of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6935 * x1: X coordinate of first segment of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6936 * y1: Y coordinate of first segment of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6937 * x2: X coordinate of second segment of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6938 * y2: Y coordinate of second segment of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6939 */
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6940 void API dw_draw_arc(HWND handle, HPIXMAP pixmap, int flags, int xorigin, int yorigin, int x1, int y1, int x2, int y2)
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6941 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6942 int _locked_by_me = FALSE;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6943 cairo_t *cr = NULL;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6944
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6945 DW_MUTEX_LOCK;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6946 if(handle)
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6947 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6948 GdkWindow *window = gtk_widget_get_window(handle);
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6949 /* Safety check for non-existant windows */
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6950 if(!window || !GDK_IS_WINDOW(window))
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6951 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6952 DW_MUTEX_UNLOCK;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6953 return;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6954 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6955 cr = gdk_cairo_create(window);
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6956 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6957 else if(pixmap)
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6958 cr = cairo_create(pixmap->image);
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6959 if(cr)
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6960 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6961 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key);
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6962 double dx = xorigin - x1;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6963 double dy = yorigin - y1;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6964 double r = sqrt(dx*dx + dy*dy);
1266
83b0ed8c8377 Fixed on GTK passing angles to cairo in degrees instead of radians.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1263
diff changeset
6965 double a1 = atan2((y1-yorigin), (x1-xorigin));
83b0ed8c8377 Fixed on GTK passing angles to cairo in degrees instead of radians.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1263
diff changeset
6966 double a2 = atan2((y2-yorigin), (x2-xorigin));
1283
87d6d11b6323 Initial support for ellipses on GTK3 and GTK2 Printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1281
diff changeset
6967 int width = x2-x1;
87d6d11b6323 Initial support for ellipses on GTK3 and GTK2 Printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1281
diff changeset
6968 float scale = (float)(y2-y1)/(float)width;
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6969
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6970 gdk_cairo_set_source_color (cr, foreground);
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6971 cairo_set_line_width(cr, 1);
1283
87d6d11b6323 Initial support for ellipses on GTK3 and GTK2 Printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1281
diff changeset
6972 if(scale != 1.0)
87d6d11b6323 Initial support for ellipses on GTK3 and GTK2 Printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1281
diff changeset
6973 cairo_scale(cr, 1.0, scale);
1271
8655753e2bc4 Implemented DW_DRAW_FULL and DW_DRAW_FILL for GTK3 and GTK2 printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1266
diff changeset
6974 if(flags & DW_DRAW_FULL)
1283
87d6d11b6323 Initial support for ellipses on GTK3 and GTK2 Printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1281
diff changeset
6975 cairo_arc(cr, xorigin, yorigin / scale, (x2-x1)/2, 0, M_PI*2);
1271
8655753e2bc4 Implemented DW_DRAW_FULL and DW_DRAW_FILL for GTK3 and GTK2 printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1266
diff changeset
6976 else
8655753e2bc4 Implemented DW_DRAW_FULL and DW_DRAW_FILL for GTK3 and GTK2 printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1266
diff changeset
6977 cairo_arc(cr, xorigin, yorigin, r, a1, a2);
8655753e2bc4 Implemented DW_DRAW_FULL and DW_DRAW_FILL for GTK3 and GTK2 printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1266
diff changeset
6978 if(flags & DW_DRAW_FILL)
8655753e2bc4 Implemented DW_DRAW_FULL and DW_DRAW_FILL for GTK3 and GTK2 printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1266
diff changeset
6979 cairo_fill(cr);
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6980 cairo_stroke(cr);
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6981 cairo_destroy(cr);
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6982 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6983 DW_MUTEX_UNLOCK;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6984 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
6985
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6986 /* Draw text on a window (preferably a render window).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6987 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6988 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6989 * pixmap: Handle to the pixmap. (choose only one of these)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6990 * x: X coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6991 * y: Y coordinate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6992 * text: Text to be displayed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6993 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6994 void dw_draw_text(HWND handle, HPIXMAP pixmap, int x, int y, char *text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6995 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6996 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6997 cairo_t *cr = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6998 PangoFontDescription *font;
1232
db21c0081387 Fixes for dw_font_text_extents_get() on GTK not honoring the font set by dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1223
diff changeset
6999 char *tmpname, *fontname = "monospace 10";
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7000
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7001 if(!text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7002 return;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
7003
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7004 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7005 if(handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7006 {
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7007 GdkWindow *window = gtk_widget_get_window(handle);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7008 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7009 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7010 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7011 DW_MUTEX_UNLOCK;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7012 return;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7013 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7014 cr = gdk_cairo_create(window);
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7015 if((tmpname = (char *)g_object_get_data(G_OBJECT(handle), "_dw_fontname")))
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7016 fontname = tmpname;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7017 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7018 else if(pixmap)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7019 {
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7020 if(pixmap->font)
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7021 fontname = pixmap->font;
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7022 else if(pixmap->handle && (tmpname = (char *)g_object_get_data(G_OBJECT(pixmap->handle), "_dw_fontname")))
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7023 fontname = tmpname;
815
c1e93dd575a5 Initial implementation of a slightly disjointed dual cairo_surface gdkpixbuf image model.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 814
diff changeset
7024 cr = cairo_create(pixmap->image);
c1e93dd575a5 Initial implementation of a slightly disjointed dual cairo_surface gdkpixbuf image model.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 814
diff changeset
7025 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7026 if(cr)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7027 {
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7028 font = pango_font_description_from_string(fontname);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7029 if(font)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7030 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7031 PangoContext *context = pango_cairo_create_context(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7032
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7033 if(context)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7034 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7035 PangoLayout *layout = pango_layout_new(context);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7036
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7037 if(layout)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7038 {
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
7039 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
7040 GdkColor *background = pthread_getspecific(_dw_bg_color_key);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7041
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7042 pango_layout_set_font_description(layout, font);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7043 pango_layout_set_text(layout, text, strlen(text));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7044
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
7045 gdk_cairo_set_source_color (cr, foreground);
892
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7046 /* Create a background color attribute if required */
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
7047 if(background)
892
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7048 {
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7049 PangoAttrList *list = pango_layout_get_attributes(layout);
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
7050 PangoAttribute *attr = pango_attr_background_new(background->red,
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
7051 background->green,
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
7052 background->blue);
892
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7053 if(!list)
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7054 {
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7055 list = pango_attr_list_new();
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7056 }
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7057 pango_attr_list_change(list, attr);
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7058 pango_layout_set_attributes(layout, list);
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7059 }
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7060 /* Do the drawing */
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7061 cairo_move_to(cr, x, y);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7062 pango_cairo_show_layout (cr, layout);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
7063
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7064 g_object_unref(layout);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7065 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7066 g_object_unref(context);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7067 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7068 pango_font_description_free(font);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7069 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7070 cairo_destroy(cr);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7071 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7072 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7073 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7074
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7075 /* Query the width and height of a text string.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7076 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7077 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7078 * pixmap: Handle to the pixmap. (choose only one of these)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7079 * text: Text to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7080 * width: Pointer to a variable to be filled in with the width.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7081 * height Pointer to a variable to be filled in with the height.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7082 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7083 void dw_font_text_extents_get(HWND handle, HPIXMAP pixmap, char *text, int *width, int *height)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7084 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7085 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7086 PangoFontDescription *font;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7087 char *fontname = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7088 int free_fontname = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7089
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7090 if(!text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7091 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7092
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7093 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7094 if(handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7095 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7096 fontname = (char *)g_object_get_data(G_OBJECT(handle), "_dw_fontname");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7097 if ( fontname == NULL )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7098 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7099 fontname = dw_window_get_font(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7100 free_fontname = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7101 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7102 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7103 else if(pixmap)
1232
db21c0081387 Fixes for dw_font_text_extents_get() on GTK not honoring the font set by dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1223
diff changeset
7104 {
db21c0081387 Fixes for dw_font_text_extents_get() on GTK not honoring the font set by dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1223
diff changeset
7105 if(pixmap->font)
db21c0081387 Fixes for dw_font_text_extents_get() on GTK not honoring the font set by dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1223
diff changeset
7106 fontname = pixmap->font;
db21c0081387 Fixes for dw_font_text_extents_get() on GTK not honoring the font set by dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1223
diff changeset
7107 else if(pixmap->handle)
db21c0081387 Fixes for dw_font_text_extents_get() on GTK not honoring the font set by dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1223
diff changeset
7108 fontname = (char *)g_object_get_data(G_OBJECT(pixmap->handle), "_dw_fontname");
db21c0081387 Fixes for dw_font_text_extents_get() on GTK not honoring the font set by dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1223
diff changeset
7109 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7110
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7111 font = pango_font_description_from_string(fontname ? fontname : "monospace 10");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7112 if(font)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7113 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7114 PangoContext *context = gdk_pango_context_get();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7115
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7116 if(context)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7117 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7118 PangoLayout *layout = pango_layout_new(context);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7119
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7120 if(layout)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7121 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7122 PangoRectangle rect;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7123
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7124 pango_layout_set_font_description(layout, font);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7125 pango_layout_set_text(layout, text, -1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7126 pango_layout_get_pixel_extents(layout, NULL, &rect);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7127
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7128 if(width)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7129 *width = rect.width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7130 if(height)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7131 *height = rect.height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7132
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7133 g_object_unref(layout);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7134 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7135 g_object_unref(context);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7136 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7137 pango_font_description_free(font);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7138 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7139 if ( free_fontname )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7140 free( fontname );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7141 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7142 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7143
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7144 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7145 * Creates a pixmap with given parameters.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7146 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7147 * handle: Window handle the pixmap is associated with.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7148 * or zero to enable this pixmap to be written
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7149 * off the screen to reduce flicker
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7150 * width: Width of the pixmap in pixels.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7151 * height: Height of the pixmap in pixels.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7152 * depth: Color depth of the pixmap.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7153 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7154 * A handle to a pixmap or NULL on failure.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7155 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7156 HPIXMAP dw_pixmap_new(HWND handle, unsigned long width, unsigned long height, int depth)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7157 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7158 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7159 HPIXMAP pixmap;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7160
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7161 if (!(pixmap = calloc(1,sizeof(struct _hpixmap))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7162 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7163
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7164 if (!depth)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7165 depth = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7166
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7167 pixmap->width = width; pixmap->height = height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7168
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7169
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7170 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7171 pixmap->handle = handle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7172 /* Depth needs to be divided by 3... but for the RGB colorspace...
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7173 * only 8 bits per sample is allowed, so to avoid issues just pass 8 for now.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7174 */
815
c1e93dd575a5 Initial implementation of a slightly disjointed dual cairo_surface gdkpixbuf image model.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 814
diff changeset
7175 pixmap->pixbuf = gdk_pixbuf_new( GDK_COLORSPACE_RGB, FALSE, 8, width, height );
c1e93dd575a5 Initial implementation of a slightly disjointed dual cairo_surface gdkpixbuf image model.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 814
diff changeset
7176 pixmap->image = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7177 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7178 return pixmap;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7179 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7180
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7181 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7182 * Creates a pixmap from a file.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7183 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7184 * handle: Window handle the pixmap is associated with.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7185 * filename: Name of the file, omit extention to have
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7186 * DW pick the appropriate file extension.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7187 * (BMP on OS/2 or Windows, XPM on Unix)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7188 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7189 * A handle to a pixmap or NULL on failure.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7190 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7191 HPIXMAP dw_pixmap_new_from_file(HWND handle, char *filename)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7192 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7193 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7194 HPIXMAP pixmap;
1258
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
7195 char *file = alloca(strlen(filename) + 6);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7196 int found_ext = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7197 int i;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7198
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7199 if (!file || !(pixmap = calloc(1,sizeof(struct _hpixmap))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7200 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7201
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7202 strcpy(file, filename);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7203
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7204 /* check if we can read from this file (it exists and read permission) */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7205 if(access(file, 04) != 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7206 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7207 /* Try with various extentions */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7208 for ( i = 0; i < NUM_EXTS; i++ )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7209 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7210 strcpy( file, filename );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7211 strcat( file, image_exts[i] );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7212 if ( access( file, 04 ) == 0 )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7213 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7214 found_ext = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7215 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7216 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7217 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7218 if ( found_ext == 0 )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7219 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7220 free(pixmap);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7221 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7222 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7223 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7224
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7225 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7226 pixmap->pixbuf = gdk_pixbuf_new_from_file(file, NULL);
815
c1e93dd575a5 Initial implementation of a slightly disjointed dual cairo_surface gdkpixbuf image model.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 814
diff changeset
7227 pixmap->image = cairo_image_surface_create_from_png(file);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7228 pixmap->width = gdk_pixbuf_get_width(pixmap->pixbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7229 pixmap->height = gdk_pixbuf_get_height(pixmap->pixbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7230 pixmap->handle = handle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7231 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7232 return pixmap;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7233 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7234
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7235 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7236 * Creates a pixmap from data
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7237 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7238 * handle: Window handle the pixmap is associated with.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7239 * data: Source of image data
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7240 * DW pick the appropriate file extension.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7241 * (BMP on OS/2 or Windows, XPM on Unix)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7242 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7243 * A handle to a pixmap or NULL on failure.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7244 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7245 HPIXMAP dw_pixmap_new_from_data(HWND handle, char *data, int len)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7246 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7247 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7248 char *file;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7249 FILE *fp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7250 HPIXMAP pixmap;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7251
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7252 if (!data || !(pixmap = calloc(1,sizeof(struct _hpixmap))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7253 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7254
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7255 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7256 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7257 * A real hack; create a temporary file and write the contents
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7258 * of the data to the file
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7259 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7260 file = tmpnam( NULL );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7261 fp = fopen( file, "wb" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7262 if ( fp )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7263 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7264 fwrite( data, len, 1, fp );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7265 fclose( fp );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7266 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7267 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7268 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7269 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7270 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7271 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7272 pixmap->pixbuf = gdk_pixbuf_new_from_file(file, NULL);
815
c1e93dd575a5 Initial implementation of a slightly disjointed dual cairo_surface gdkpixbuf image model.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 814
diff changeset
7273 pixmap->image = cairo_image_surface_create_from_png(file);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7274 pixmap->width = gdk_pixbuf_get_width(pixmap->pixbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7275 pixmap->height = gdk_pixbuf_get_height(pixmap->pixbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7276 /* remove our temporary file */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7277 unlink (file );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7278 pixmap->handle = handle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7279 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7280 return pixmap;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7281 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7282
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7283 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7284 * Sets the transparent color for a pixmap
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7285 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7286 * pixmap: Handle to a pixmap returned by
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7287 * dw_pixmap_new..
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7288 * color: transparent color
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7289 * Note: This does nothing on GTK+ as transparency
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7290 * is handled automatically
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7291 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7292 void dw_pixmap_set_transparent_color(HPIXMAP pixmap, unsigned long color)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7293 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7294 pixmap = pixmap;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7295 color = color;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7296 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7297
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7298 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7299 * Creates a pixmap from internal resource graphic specified by id.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7300 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7301 * handle: Window handle the pixmap is associated with.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7302 * id: Resource ID associated with requested pixmap.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7303 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7304 * A handle to a pixmap or NULL on failure.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7305 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7306 HPIXMAP dw_pixmap_grab(HWND handle, ULONG id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7307 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7308 HPIXMAP pixmap;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7309 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7310
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7311 if (!(pixmap = calloc(1,sizeof(struct _hpixmap))))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7312 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7313
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7314
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7315 DW_MUTEX_LOCK;
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
7316 pixmap->pixbuf = gdk_pixbuf_copy(_find_pixbuf((HICN)id, &pixmap->width, &pixmap->height));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7317 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7318 return pixmap;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7319 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7320
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7321 /* Call this after drawing to the screen to make sure
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7322 * anything you have drawn is visible.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7323 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7324 void dw_flush(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7325 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7326 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7327
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7328 /*
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7329 * Sets the font used by a specified pixmap.
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7330 * Normally the pixmap font is obtained from the associated window handle.
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7331 * However this can be used to override that, or for pixmaps with no window.
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7332 * Parameters:
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7333 * pixmap: Handle to a pixmap returned by dw_pixmap_new() or
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7334 * passed to the application via a callback.
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7335 * fontname: Name and size of the font in the form "size.fontname"
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7336 * Returns:
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7337 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7338 */
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7339 int API dw_pixmap_set_font(HPIXMAP pixmap, char *fontname)
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7340 {
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7341 if(pixmap && fontname && *fontname)
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7342 {
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7343 char *oldfont = pixmap->font;
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7344 pixmap->font = strdup(fontname);
1240
3bc6244279c0 Attempt at converting DW style font names on GTK for dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1232
diff changeset
7345 _convert_font(pixmap->font);
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7346 if(oldfont)
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7347 free(oldfont);
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7348 return DW_ERROR_NONE;
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7349 }
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7350 return DW_ERROR_GENERAL;
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7351 }
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7352
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7353 /*
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7354 * Destroys an allocated pixmap.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7355 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7356 * pixmap: Handle to a pixmap returned by
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7357 * dw_pixmap_new..
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7358 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7359 void dw_pixmap_destroy(HPIXMAP pixmap)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7360 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7361 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7362
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7363 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7364 g_object_unref(G_OBJECT(pixmap->pixbuf));
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7365 cairo_surface_destroy(pixmap->image);
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7366 if(pixmap->font)
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7367 free(pixmap->font);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7368 free(pixmap);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7369 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7370 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7371
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7372 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7373 * Copies from one item to another.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7374 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7375 * dest: Destination window handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7376 * destp: Destination pixmap. (choose only one).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7377 * xdest: X coordinate of destination.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7378 * ydest: Y coordinate of destination.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7379 * width: Width of area to copy.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7380 * height: Height of area to copy.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7381 * src: Source window handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7382 * srcp: Source pixmap. (choose only one).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7383 * xsrc: X coordinate of source.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7384 * ysrc: Y coordinate of source.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7385 */
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7386 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)
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7387 {
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7388 dw_pixmap_stretch_bitblt(dest, destp, xdest, ydest, width, height, src, srcp, xsrc, ysrc, -1, -1);
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7389 }
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7390
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7391 /*
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7392 * Copies from one surface to another allowing for stretching.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7393 * Parameters:
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7394 * dest: Destination window handle.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7395 * destp: Destination pixmap. (choose only one).
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7396 * xdest: X coordinate of destination.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7397 * ydest: Y coordinate of destination.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7398 * width: Width of the target area.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7399 * height: Height of the target area.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7400 * src: Source window handle.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7401 * srcp: Source pixmap. (choose only one).
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7402 * xsrc: X coordinate of source.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7403 * ysrc: Y coordinate of source.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7404 * srcwidth: Width of area to copy.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7405 * srcheight: Height of area to copy.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7406 * Returns:
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7407 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7408 */
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7409 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)
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7410 {
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7411 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7412 cairo_t *cr = NULL;
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7413 int retval = DW_ERROR_GENERAL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7414
1177
c38ec904b6d3 Fixed dw_pixmap_bitblt() on printing context pixmaps in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1161
diff changeset
7415 if((!dest && (!destp || !destp->image)) || (!src && (!srcp || !srcp->image)))
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7416 return retval;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7417
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7418 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7419 if(dest)
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7420 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7421 GdkWindow *window = gtk_widget_get_window(dest);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7422 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7423 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7424 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7425 DW_MUTEX_UNLOCK;
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7426 return retval;
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7427 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7428 cr = gdk_cairo_create(window);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7429 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7430 else if(destp)
816
916002e29d4c Implemented dw_pixmap_bitblt() with cairo surfaces instead of pixbufs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 815
diff changeset
7431 cr = cairo_create(destp->image);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
7432
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7433 if(cr)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7434 {
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7435 double xscale = 1, yscale = 1;
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7436
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7437 if(srcwidth != -1 && srcheight != -1)
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7438 {
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7439 xscale = (double)width / (double)srcwidth;
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7440 yscale = (double)height / (double)srcheight;
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7441 cairo_scale(cr, xscale, yscale);
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7442 }
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7443
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7444 if(src)
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7445 gdk_cairo_set_source_window (cr, gtk_widget_get_window(src), (xdest + xsrc) / xscale, (ydest + ysrc) / yscale);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7446 else if(srcp)
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7447 cairo_set_source_surface (cr, srcp->image, (xdest + xsrc) / xscale, (ydest + ysrc) / yscale);
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7448
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7449 cairo_rectangle(cr, xdest / xscale, ydest / yscale, width, height);
959
37f2938ecd72 Fixes for bitblts with clipping and offset on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 900
diff changeset
7450 cairo_fill(cr);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7451 cairo_destroy(cr);
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7452 retval = DW_ERROR_NONE;
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7453 }
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7454 DW_MUTEX_UNLOCK;
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7455 return retval;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7456 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7457
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7458 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7459 * Emits a beep.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7460 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7461 * freq: Frequency.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7462 * dur: Duration.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7463 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7464 void dw_beep(int freq, int dur)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7465 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7466 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7467
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7468 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7469 gdk_beep();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7470 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7471 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7472
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7473 void _my_strlwr(char *buf)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7474 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7475 int z, len = strlen(buf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7476
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7477 for(z=0;z<len;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7478 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7479 if(buf[z] >= 'A' && buf[z] <= 'Z')
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7480 buf[z] -= 'A' - 'a';
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7481 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7482 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7483
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7484 /* Open a shared library and return a handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7485 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7486 * name: Base name of the shared library.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7487 * handle: Pointer to a module handle,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7488 * will be filled in with the handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7489 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7490 int dw_module_load(char *name, HMOD *handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7491 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7492 int len;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7493 char *newname;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7494 char errorbuf[1024];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7495
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7496
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7497 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7498 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7499
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7500 if((len = strlen(name)) == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7501 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7502
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7503 /* Lenth + "lib" + ".so" + NULL */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7504 newname = malloc(len + 7);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7505
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7506 if(!newname)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7507 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7508
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7509 sprintf(newname, "lib%s.so", name);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7510 _my_strlwr(newname);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7511
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7512 *handle = dlopen(newname, RTLD_NOW);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7513 if(*handle == NULL)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7514 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7515 strncpy(errorbuf, dlerror(), 1024);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7516 printf("%s\n", errorbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7517 sprintf(newname, "lib%s.so", name);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7518 *handle = dlopen(newname, RTLD_NOW);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7519 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7520
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7521 free(newname);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7522
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7523 return (NULL == *handle) ? -1 : 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7524 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7525
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7526 /* Queries the address of a symbol within open handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7527 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7528 * handle: Module handle returned by dw_module_load()
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7529 * name: Name of the symbol you want the address of.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7530 * func: A pointer to a function pointer, to obtain
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7531 * the address.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7532 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7533 int dw_module_symbol(HMOD handle, char *name, void**func)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7534 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7535 if(!func || !name)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7536 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7537
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7538 if(strlen(name) == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7539 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7540
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7541 *func = (void*)dlsym(handle, name);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7542 return (NULL == *func);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7543 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7544
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7545 /* Frees the shared library previously opened.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7546 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7547 * handle: Module handle returned by dw_module_load()
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7548 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7549 int dw_module_close(HMOD handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7550 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7551 if(handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7552 return dlclose(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7553 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7554 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7555
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7556 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7557 * Returns the handle to an unnamed mutex semaphore.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7558 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7559 HMTX dw_mutex_new(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7560 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7561 HMTX mutex = malloc(sizeof(pthread_mutex_t));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7562
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7563 pthread_mutex_init(mutex, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7564 return mutex;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7565 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7566
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7567 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7568 * Closes a semaphore created by dw_mutex_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7569 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7570 * mutex: The handle to the mutex returned by dw_mutex_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7571 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7572 void dw_mutex_close(HMTX mutex)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7573 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7574 if(mutex)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7575 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7576 pthread_mutex_destroy(mutex);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7577 free(mutex);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7578 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7579 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7580
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7581 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7582 * Tries to gain access to the semaphore, if it can't it blocks.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7583 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7584 * mutex: The handle to the mutex returned by dw_mutex_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7585 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7586 void dw_mutex_lock(HMTX mutex)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7587 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7588 /* If we are being called from an event handler we must release
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7589 * the GTK mutex so we don't deadlock.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7590 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7591 if(pthread_self() == _dw_thread)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7592 gdk_threads_leave();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7593
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7594 pthread_mutex_lock(mutex);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7595
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7596 /* And of course relock it when we have acquired the mutext */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7597 if(pthread_self() == _dw_thread)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7598 gdk_threads_enter();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7599 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7600
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7601 /*
1158
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7602 * Tries to gain access to the semaphore.
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7603 * Parameters:
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7604 * mutex: The handle to the mutex returned by dw_mutex_new().
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7605 * Returns:
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7606 * DW_ERROR_NONE on success, DW_ERROR_TIMEOUT if it is already locked.
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7607 */
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7608 int API dw_mutex_trylock(HMTX mutex)
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7609 {
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7610 if(pthread_mutex_trylock(mutex) == 0)
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7611 return DW_ERROR_NONE;
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7612 return DW_ERROR_TIMEOUT;
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7613 }
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7614
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7615 /*
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7616 * Reliquishes the access to the semaphore.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7617 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7618 * mutex: The handle to the mutex returned by dw_mutex_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7619 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7620 void dw_mutex_unlock(HMTX mutex)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7621 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7622 pthread_mutex_unlock(mutex);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7623 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7624
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7625 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7626 * Returns the handle to an unnamed event semaphore.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7627 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7628 HEV dw_event_new(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7629 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7630 HEV eve = (HEV)malloc(sizeof(struct _dw_unix_event));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7631
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7632 if(!eve)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7633 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7634
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7635 /* We need to be careful here, mutexes on Linux are
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7636 * FAST by default but are error checking on other
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7637 * systems such as FreeBSD and OS/2, perhaps others.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7638 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7639 pthread_mutex_init (&(eve->mutex), NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7640 pthread_mutex_lock (&(eve->mutex));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7641 pthread_cond_init (&(eve->event), NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7642
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7643 pthread_mutex_unlock (&(eve->mutex));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7644 eve->alive = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7645 eve->posted = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7646
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7647 return eve;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7648 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7649
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7650 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7651 * Resets a semaphore created by dw_event_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7652 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7653 * eve: The handle to the event returned by dw_event_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7654 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7655 int dw_event_reset (HEV eve)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7656 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7657 if(!eve)
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
7658 return DW_ERROR_NON_INIT;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7659
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7660 pthread_mutex_lock (&(eve->mutex));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7661 pthread_cond_broadcast (&(eve->event));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7662 pthread_cond_init (&(eve->event), NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7663 eve->posted = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7664 pthread_mutex_unlock (&(eve->mutex));
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
7665 return DW_ERROR_NONE;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7666 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7667
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7668 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7669 * Posts a semaphore created by dw_event_new(). Causing all threads
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7670 * waiting on this event in dw_event_wait to continue.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7671 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7672 * eve: The handle to the event returned by dw_event_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7673 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7674 int dw_event_post (HEV eve)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7675 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7676 if(!eve)
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
7677 return DW_ERROR_NON_INIT;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7678
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7679 pthread_mutex_lock (&(eve->mutex));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7680 pthread_cond_broadcast (&(eve->event));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7681 eve->posted = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7682 pthread_mutex_unlock (&(eve->mutex));
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
7683 return DW_ERROR_NONE;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7684 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7685
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7686 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7687 * Waits on a semaphore created by dw_event_new(), until the
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7688 * event gets posted or until the timeout expires.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7689 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7690 * eve: The handle to the event returned by dw_event_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7691 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7692 int dw_event_wait(HEV eve, unsigned long timeout)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7693 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7694 int rc;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7695
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7696 if(!eve)
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
7697 return DW_ERROR_NON_INIT;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7698
1203
fc87309372ef Same fix for GTK2/3 as I just committed for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1191
diff changeset
7699 pthread_mutex_lock (&(eve->mutex));
fc87309372ef Same fix for GTK2/3 as I just committed for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1191
diff changeset
7700
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7701 if(eve->posted)
1203
fc87309372ef Same fix for GTK2/3 as I just committed for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1191
diff changeset
7702 {
fc87309372ef Same fix for GTK2/3 as I just committed for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1191
diff changeset
7703 pthread_mutex_unlock (&(eve->mutex));
fc87309372ef Same fix for GTK2/3 as I just committed for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1191
diff changeset
7704 return DW_ERROR_NONE;
fc87309372ef Same fix for GTK2/3 as I just committed for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1191
diff changeset
7705 }
fc87309372ef Same fix for GTK2/3 as I just committed for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1191
diff changeset
7706
1156
03b6d9fdfac0 Fixed a typo on Unix... timeout not time.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
7707 if(timeout != -1)
1155
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7708 {
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7709 struct timeval now;
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7710 struct timespec timeo;
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7711
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7712 gettimeofday(&now, 0);
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7713 timeo.tv_sec = now.tv_sec + (timeout / 1000);
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7714 timeo.tv_nsec = now.tv_usec * 1000;
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7715 rc = pthread_cond_timedwait(&(eve->event), &(eve->mutex), &timeo);
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7716 }
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7717 else
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7718 rc = pthread_cond_wait(&(eve->event), &(eve->mutex));
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
7719
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7720 pthread_mutex_unlock (&(eve->mutex));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7721 if(!rc)
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
7722 return DW_ERROR_NONE;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7723 if(rc == ETIMEDOUT)
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
7724 return DW_ERROR_TIMEOUT;
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
7725 return DW_ERROR_GENERAL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7726 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7727
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7728 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7729 * Closes a semaphore created by dw_event_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7730 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7731 * eve: The handle to the event returned by dw_event_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7732 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7733 int dw_event_close(HEV *eve)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7734 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7735 if(!eve || !(*eve))
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
7736 return DW_ERROR_NON_INIT;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7737
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7738 pthread_mutex_lock (&((*eve)->mutex));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7739 pthread_cond_destroy (&((*eve)->event));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7740 pthread_mutex_unlock (&((*eve)->mutex));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7741 pthread_mutex_destroy (&((*eve)->mutex));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7742 free(*eve);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7743 *eve = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7744
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
7745 return DW_ERROR_NONE;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7746 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7747
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7748 struct _seminfo {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7749 int fd;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7750 int waiting;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7751 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7752
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7753 static void _handle_sem(int *tmpsock)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7754 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7755 fd_set rd;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7756 struct _seminfo *array = (struct _seminfo *)malloc(sizeof(struct _seminfo));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7757 int listenfd = tmpsock[0];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7758 int bytesread, connectcount = 1, maxfd, z, posted = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7759 char command;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7760 sigset_t mask;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7761
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7762 sigfillset(&mask); /* Mask all allowed signals */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7763 pthread_sigmask(SIG_BLOCK, &mask, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7764
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7765 /* problems */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7766 if(tmpsock[1] == -1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7767 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7768 free(array);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7769 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7770 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7771
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7772 array[0].fd = tmpsock[1];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7773 array[0].waiting = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7774
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7775 /* Free the memory allocated in dw_named_event_new. */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7776 free(tmpsock);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7777
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7778 while(1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7779 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7780 FD_ZERO(&rd);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7781 FD_SET(listenfd, &rd);
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7782 int result;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7783
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7784 maxfd = listenfd;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7785
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7786 /* Added any connections to the named event semaphore */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7787 for(z=0;z<connectcount;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7788 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7789 if(array[z].fd > maxfd)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7790 maxfd = array[z].fd;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7791
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7792 FD_SET(array[z].fd, &rd);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7793 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7794
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7795 if(select(maxfd+1, &rd, NULL, NULL, NULL) == -1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7796 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7797
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7798 if(FD_ISSET(listenfd, &rd))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7799 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7800 struct _seminfo *newarray;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7801 int newfd = accept(listenfd, 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7802
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7803 if(newfd > -1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7804 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7805 /* Add new connections to the set */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7806 newarray = (struct _seminfo *)malloc(sizeof(struct _seminfo)*(connectcount+1));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7807 memcpy(newarray, array, sizeof(struct _seminfo)*(connectcount));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7808
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7809 newarray[connectcount].fd = newfd;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7810 newarray[connectcount].waiting = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7811
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7812 connectcount++;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7813
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7814 /* Replace old array with new one */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7815 free(array);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7816 array = newarray;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7817 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7818 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7819
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7820 /* Handle any events posted to the semaphore */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7821 for(z=0;z<connectcount;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7822 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7823 if(FD_ISSET(array[z].fd, &rd))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7824 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7825 if((bytesread = read(array[z].fd, &command, 1)) < 1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7826 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7827 struct _seminfo *newarray;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7828
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7829 /* Remove this connection from the set */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7830 newarray = (struct _seminfo *)malloc(sizeof(struct _seminfo)*(connectcount-1));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7831 if(!z)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7832 memcpy(newarray, &array[1], sizeof(struct _seminfo)*(connectcount-1));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7833 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7834 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7835 memcpy(newarray, array, sizeof(struct _seminfo)*z);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7836 if(z!=(connectcount-1))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7837 memcpy(&newarray[z], &array[z+1], sizeof(struct _seminfo)*(z-connectcount-1));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7838 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7839 connectcount--;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7840
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7841 /* Replace old array with new one */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7842 free(array);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7843 array = newarray;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7844 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7845 else if(bytesread == 1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7846 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7847 switch(command)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7848 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7849 case 0:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7850 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7851 /* Reset */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7852 posted = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7853 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7854 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7855 case 1:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7856 /* Post */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7857 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7858 int s;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7859 char tmp = (char)0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7860
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7861 posted = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7862
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7863 for(s=0;s<connectcount;s++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7864 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7865 /* The semaphore has been posted so
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7866 * we tell all the waiting threads to
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7867 * continue.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7868 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7869 if(array[s].waiting)
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7870 result = write(array[s].fd, &tmp, 1);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7871 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7872 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7873 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7874 case 2:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7875 /* Wait */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7876 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7877 char tmp = (char)0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7878
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7879 array[z].waiting = 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7880
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7881 /* If we are posted exit immeditately */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7882 if(posted)
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7883 result = write(array[z].fd, &tmp, 1);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7884 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7885 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7886 case 3:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7887 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7888 /* Done Waiting */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7889 array[z].waiting = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7890 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7891 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7892 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7893 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7894 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7895 }
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
7896 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7897 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7898
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7899 /* Using domain sockets on unix for IPC */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7900 /* Create a named event semaphore which can be
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7901 * opened from other processes.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7902 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7903 * eve: Pointer to an event handle to receive handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7904 * name: Name given to semaphore which can be opened
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7905 * by other processes.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7906 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7907 HEV dw_named_event_new(char *name)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7908 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7909 struct sockaddr_un un;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7910 int ev, *tmpsock = (int *)malloc(sizeof(int)*2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7911 DWTID dwthread;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7912
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7913 if(!tmpsock)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7914 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7915
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7916 tmpsock[0] = socket(AF_UNIX, SOCK_STREAM, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7917 ev = socket(AF_UNIX, SOCK_STREAM, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7918 memset(&un, 0, sizeof(un));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7919 un.sun_family=AF_UNIX;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7920 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7921 strcpy(un.sun_path, "/tmp/.dw/");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7922 strcat(un.sun_path, name);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7923
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7924 /* just to be safe, this should be changed
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7925 * to support multiple instances.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7926 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7927 remove(un.sun_path);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7928
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7929 bind(tmpsock[0], (struct sockaddr *)&un, sizeof(un));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7930 listen(tmpsock[0], 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7931 connect(ev, (struct sockaddr *)&un, sizeof(un));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7932 tmpsock[1] = accept(tmpsock[0], 0, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7933
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7934 if(tmpsock[0] < 0 || tmpsock[1] < 0 || ev < 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7935 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7936 if(tmpsock[0] > -1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7937 close(tmpsock[0]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7938 if(tmpsock[1] > -1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7939 close(tmpsock[1]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7940 if(ev > -1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7941 close(ev);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7942 free(tmpsock);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7943 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7944 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7945
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7946 /* Create a thread to handle this event semaphore */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7947 pthread_create(&dwthread, NULL, (void *)_handle_sem, (void *)tmpsock);
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7948 return GINT_TO_POINTER(ev);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7949 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7950
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7951 /* Open an already existing named event semaphore.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7952 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7953 * eve: Pointer to an event handle to receive handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7954 * name: Name given to semaphore which can be opened
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7955 * by other processes.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7956 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7957 HEV dw_named_event_get(char *name)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7958 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7959 struct sockaddr_un un;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7960 int ev = socket(AF_UNIX, SOCK_STREAM, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7961 if(ev < 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7962 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7963
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7964 un.sun_family=AF_UNIX;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7965 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7966 strcpy(un.sun_path, "/tmp/.dw/");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7967 strcat(un.sun_path, name);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7968 connect(ev, (struct sockaddr *)&un, sizeof(un));
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7969 return GINT_TO_POINTER(ev);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7970 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7971
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7972 /* Resets the event semaphore so threads who call wait
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7973 * on this semaphore will block.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7974 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7975 * eve: Handle to the semaphore obtained by
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7976 * an open or create call.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7977 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7978 int dw_named_event_reset(HEV eve)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7979 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7980 /* signal reset */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7981 char tmp = (char)0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7982
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7983 if(GPOINTER_TO_INT(eve) < 0)
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7984 return DW_ERROR_NONE;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7985
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7986 if(write(GPOINTER_TO_INT(eve), &tmp, 1) == 1)
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7987 return DW_ERROR_NONE;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7988 return DW_ERROR_GENERAL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7989 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7990
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7991 /* Sets the posted state of an event semaphore, any threads
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7992 * waiting on the semaphore will no longer block.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7993 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7994 * eve: Handle to the semaphore obtained by
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7995 * an open or create call.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7996 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7997 int dw_named_event_post(HEV eve)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7998 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7999
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8000 /* signal post */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8001 char tmp = (char)1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8002
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8003 if(GPOINTER_TO_INT(eve) < 0)
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8004 return DW_ERROR_NONE;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8005
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8006 if(write(GPOINTER_TO_INT(eve), &tmp, 1) == 1)
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8007 return DW_ERROR_NONE;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8008 return DW_ERROR_GENERAL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8009 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8010
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8011 /* Waits on the specified semaphore until it becomes
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8012 * posted, or returns immediately if it already is posted.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8013 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8014 * eve: Handle to the semaphore obtained by
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8015 * an open or create call.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8016 * timeout: Number of milliseconds before timing out
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8017 * or -1 if indefinite.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8018 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8019 int dw_named_event_wait(HEV eve, unsigned long timeout)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8020 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8021 fd_set rd;
1155
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
8022 struct timeval tv, *useme = NULL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8023 int retval = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8024 char tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8025
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8026 if(GPOINTER_TO_INT(eve) < 0)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8027 return DW_ERROR_NON_INIT;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8028
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8029 /* Set the timout or infinite */
1155
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
8030 if(timeout != -1)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8031 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8032 tv.tv_sec = timeout / 1000;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8033 tv.tv_usec = timeout % 1000;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8034
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8035 useme = &tv;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8036 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8037
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8038 FD_ZERO(&rd);
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8039 FD_SET(GPOINTER_TO_INT(eve), &rd);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8040
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8041 /* Signal wait */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8042 tmp = (char)2;
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8043 retval = write(GPOINTER_TO_INT(eve), &tmp, 1);
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8044
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8045 if(retval == 1)
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8046 retval = select(GPOINTER_TO_INT(eve)+1, &rd, NULL, NULL, useme);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8047
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8048 /* Signal done waiting. */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8049 tmp = (char)3;
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8050 if(retval == 1)
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8051 retval = write(GPOINTER_TO_INT(eve), &tmp, 1);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8052
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8053 if(retval == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8054 return DW_ERROR_TIMEOUT;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8055 else if(retval == -1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8056 return DW_ERROR_INTERRUPT;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8057
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8058 /* Clear the entry from the pipe so
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8059 * we don't loop endlessly. :)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8060 */
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8061 if(read(GPOINTER_TO_INT(eve), &tmp, 1) == 1)
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8062 return DW_ERROR_NONE;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8063 return DW_ERROR_GENERAL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8064 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8065
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8066 /* Release this semaphore, if there are no more open
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8067 * handles on this semaphore the semaphore will be destroyed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8068 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8069 * eve: Handle to the semaphore obtained by
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8070 * an open or create call.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8071 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8072 int dw_named_event_close(HEV eve)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8073 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8074 /* Finally close the domain socket,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8075 * cleanup will continue in _handle_sem.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8076 */
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8077 close(GPOINTER_TO_INT(eve));
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8078 return DW_ERROR_NONE;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8079 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8080
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8081 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8082 * Setup thread independent color sets.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8083 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8084 void _dwthreadstart(void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8085 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8086 void (*threadfunc)(void *) = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8087 void **tmp = (void **)data;
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8088 GdkColor *foreground, *background;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8089
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8090 threadfunc = (void (*)(void *))tmp[0];
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8091
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8092 /* Initialize colors */
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8093 _init_thread();
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8094
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8095 threadfunc(tmp[1]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8096 free(tmp);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8097
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8098 /* Free colors */
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8099 if((foreground = pthread_getspecific(_dw_fg_color_key)))
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8100 free(foreground);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8101 if((background = pthread_getspecific(_dw_bg_color_key)))
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8102 free(background);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8103 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8104
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8105 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8106 * Allocates a shared memory region with a name.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8107 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8108 * handle: A pointer to receive a SHM identifier.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8109 * dest: A pointer to a pointer to receive the memory address.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8110 * size: Size in bytes of the shared memory region to allocate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8111 * name: A string pointer to a unique memory name.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8112 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8113 HSHM dw_named_memory_new(void **dest, int size, char *name)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8114 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8115 char namebuf[1024];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8116 struct _dw_unix_shm *handle = malloc(sizeof(struct _dw_unix_shm));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8117
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8118 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8119 sprintf(namebuf, "/tmp/.dw/%s", name);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8120
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8121 if((handle->fd = open(namebuf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) < 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8122 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8123 free(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8124 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8125 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8126
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8127 if(ftruncate(handle->fd, size))
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8128 {
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8129 close(handle->fd);
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8130 free(handle);
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8131 return NULL;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8132 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8133
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8134 /* attach the shared memory segment to our process's address space. */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8135 *dest = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8136
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8137 if(*dest == MAP_FAILED)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8138 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8139 close(handle->fd);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8140 *dest = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8141 free(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8142 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8143 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8144
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8145 handle->size = size;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8146 handle->sid = getsid(0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8147 handle->path = strdup(namebuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8148
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8149 return handle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8150 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8151
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8152 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8153 * Aquires shared memory region with a name.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8154 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8155 * dest: A pointer to a pointer to receive the memory address.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8156 * size: Size in bytes of the shared memory region to requested.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8157 * name: A string pointer to a unique memory name.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8158 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8159 HSHM dw_named_memory_get(void **dest, int size, char *name)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8160 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8161 char namebuf[1024];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8162 struct _dw_unix_shm *handle = malloc(sizeof(struct _dw_unix_shm));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8163
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8164 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8165 sprintf(namebuf, "/tmp/.dw/%s", name);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8166
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8167 if((handle->fd = open(namebuf, O_RDWR)) < 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8168 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8169 free(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8170 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8171 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8172
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8173 /* attach the shared memory segment to our process's address space. */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8174 *dest = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8175
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8176 if(*dest == MAP_FAILED)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8177 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8178 close(handle->fd);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8179 *dest = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8180 free(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8181 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8182 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8183
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8184 handle->size = size;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8185 handle->sid = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8186 handle->path = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8187
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8188 return handle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8189 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8190
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8191 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8192 * Frees a shared memory region previously allocated.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8193 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8194 * handle: Handle obtained from DB_named_memory_allocate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8195 * ptr: The memory address aquired with DB_named_memory_allocate.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8196 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8197 int dw_named_memory_free(HSHM handle, void *ptr)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8198 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8199 struct _dw_unix_shm *h = handle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8200 int rc = munmap(ptr, h->size);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8201
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8202 close(h->fd);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8203 if(h->path)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8204 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8205 /* Only remove the actual file if we are the
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8206 * creator of the file.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8207 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8208 if(h->sid != -1 && h->sid == getsid(0))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8209 remove(h->path);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8210 free(h->path);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8211 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8212 return rc;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8213 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8214 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8215 * Creates a new thread with a starting point of func.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8216 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8217 * func: Function which will be run in the new thread.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8218 * data: Parameter(s) passed to the function.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8219 * stack: Stack size of new thread (OS/2 and Windows only).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8220 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8221 DWTID dw_thread_new(void *func, void *data, int stack)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8222 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8223 DWTID gtkthread;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8224 void **tmp = malloc(sizeof(void *) * 2);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8225 int rc;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8226
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8227 tmp[0] = func;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8228 tmp[1] = data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8229
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8230 rc = pthread_create(&gtkthread, NULL, (void *)_dwthreadstart, (void *)tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8231 if ( rc == 0 )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8232 return gtkthread;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8233 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8234 return rc;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8235 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8236
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8237 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8238 * Ends execution of current thread immediately.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8239 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8240 void dw_thread_end(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8241 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8242 pthread_exit(NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8243 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8244
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8245 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8246 * Returns the current thread's ID.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8247 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8248 DWTID dw_thread_id(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8249 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8250 return (DWTID)pthread_self();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8251 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8252
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8253 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8254 * Cleanly terminates a DW session, should be signal handler safe.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8255 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8256 * exitcode: Exit code reported to the operating system.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8257 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8258 void dw_exit(int exitcode)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8259 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8260 if ( dbgfp != NULL )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8261 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8262 fclose( dbgfp );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8263 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8264 exit(exitcode);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8265 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8266
1087
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8267 /* Internal box packing function called by the other 3 functions */
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8268 void _dw_box_pack(HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad, char *funcname)
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8269 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8270 int warn = FALSE, _locked_by_me = FALSE;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8271 GtkWidget *tmp, *tmpitem, *image = NULL;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8272
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8273 if(!box)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8274 return;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8275
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8276 /*
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8277 * If you try and pack an item into itself VERY bad things can happen; like at least an
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8278 * infinite loop on GTK! Lets be safe!
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8279 */
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8280 if(box == item)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8281 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8282 dw_messagebox(funcname, DW_MB_OK|DW_MB_ERROR, "Danger! Danger! Will Robinson; box and item are the same!");
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8283 return;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8284 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8285
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8286 DW_MUTEX_LOCK;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8287
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8288 if((tmp = g_object_get_data(G_OBJECT(box), "_dw_boxhandle")))
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8289 box = tmp;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8290
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8291 if(!item)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8292 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8293 item = gtk_label_new("");
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8294 gtk_widget_show_all(item);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8295 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8296 else if((image = g_object_get_data(G_OBJECT(item), "_dw_bitmap")))
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8297 {
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8298 GdkPixbuf *pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(image));
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8299
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8300 if(pixbuf)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8301 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8302 int pwidth = gdk_pixbuf_get_width(pixbuf);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8303 int pheight = gdk_pixbuf_get_height(pixbuf);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8304
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8305 if(pwidth > width || pheight > height)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8306 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8307 pixbuf = gdk_pixbuf_scale_simple(pixbuf, pwidth > width ? width : pwidth, pheight > height ? height : pheight, GDK_INTERP_BILINEAR);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8308 gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8309 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8310 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8311 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8312
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8313 tmpitem = (GtkWidget *)g_object_get_data(G_OBJECT(item), "_dw_boxhandle");
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8314
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8315 if(GTK_IS_GRID(box))
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8316 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
8317 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
8318 int boxtype = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxtype"));
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8319
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8320 /* If the item being packed is a box, then we use it's padding
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8321 * instead of the padding specified on the pack line, this is
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8322 * due to a bug in the OS/2 and Win32 renderer and a limitation
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8323 * of the GtkTable class.
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8324 */
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8325 if(GTK_IS_GRID(item) || (tmpitem && GTK_IS_GRID(tmpitem)))
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8326 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8327 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(item), "_dw_eventbox");
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8328
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8329 /* NOTE: I left in the ability to pack boxes with a size,
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8330 * this eliminates that by forcing the size to 0.
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8331 */
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8332 height = width = 0;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8333
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8334 if(eventbox)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8335 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
8336 int boxpad = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(item), "_dw_boxpad"));
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8337 gtk_container_add(GTK_CONTAINER(eventbox), item);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8338 gtk_container_set_border_width(GTK_CONTAINER(eventbox), boxpad);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8339 item = eventbox;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8340 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8341 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8342 else
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8343 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8344 /* Only show warning if item is not a box */
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8345 warn = TRUE;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8346 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8347
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8348 /* Do some sanity bounds checking */
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8349 if(index < 0)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8350 index = 0;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8351 if(index > boxcount)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8352 index = boxcount;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8353
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8354 g_object_set_data(G_OBJECT(item), "_dw_table", box);
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8355 /* Set the expand attribute on the widgets now instead of the container */
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8356 gtk_widget_set_vexpand(item, vsize);
1127
ed7cbdc37a75 Widget GTK3 v/halign properties get set according to the sizing flags
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1126
diff changeset
8357 gtk_widget_set_valign(item, vsize ? GTK_ALIGN_FILL : GTK_ALIGN_START);
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8358 gtk_widget_set_hexpand(item, hsize);
1127
ed7cbdc37a75 Widget GTK3 v/halign properties get set according to the sizing flags
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1126
diff changeset
8359 gtk_widget_set_halign(item, hsize ? GTK_ALIGN_FILL : GTK_ALIGN_START);
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8360 /* Use the margin property as padding */
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8361 g_object_set(G_OBJECT(item), "margin", pad, NULL);
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8362 /* Add to the grid using insert...
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8363 * rows for vertical boxes and columns for horizontal.
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8364 */
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8365 if(boxtype == DW_VERT)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8366 {
1126
72a36ef67291 Allow GTK3 support to compile with GTK 3.0 but warn that full support requires 3.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1125
diff changeset
8367 #if GTK_CHECK_VERSION(3,1,0)
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8368 gtk_grid_insert_row(GTK_GRID(box), index);
1126
72a36ef67291 Allow GTK3 support to compile with GTK 3.0 but warn that full support requires 3.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1125
diff changeset
8369 #else
72a36ef67291 Allow GTK3 support to compile with GTK 3.0 but warn that full support requires 3.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1125
diff changeset
8370 #warning Dynamic Windows GTK3 support requires 3.1 or higher for full support.
72a36ef67291 Allow GTK3 support to compile with GTK 3.0 but warn that full support requires 3.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1125
diff changeset
8371 #endif
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8372 gtk_grid_attach(GTK_GRID(box), item, 0, index, 1, 1);
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8373 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8374 else
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8375 {
1126
72a36ef67291 Allow GTK3 support to compile with GTK 3.0 but warn that full support requires 3.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1125
diff changeset
8376 #if GTK_CHECK_VERSION(3,1,0)
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8377 gtk_grid_insert_column(GTK_GRID(box), index);
1126
72a36ef67291 Allow GTK3 support to compile with GTK 3.0 but warn that full support requires 3.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1125
diff changeset
8378 #endif
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8379 gtk_grid_attach(GTK_GRID(box), item, index, 0, 1, 1);
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8380 }
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8381 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount + 1));
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8382 /* Set the requested size of the widget */
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8383 if(GTK_IS_SCROLLED_WINDOW(item))
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8384 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8385 gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(item), width);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8386 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(item), height);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8387 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8388 else
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8389 gtk_widget_set_size_request(item, width, height);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8390 if(GTK_IS_RADIO_BUTTON(item))
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8391 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8392 GSList *group;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8393 GtkWidget *groupstart = (GtkWidget *)g_object_get_data(G_OBJECT(box), "_dw_group");
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8394
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8395 if(groupstart)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8396 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8397 group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(groupstart));
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8398 gtk_radio_button_set_group(GTK_RADIO_BUTTON(item), group);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8399 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8400 else
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8401 g_object_set_data(G_OBJECT(box), "_dw_group", (gpointer)item);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8402 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8403 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8404 else
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8405 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8406 GtkWidget *vbox = g_object_get_data(G_OBJECT(box), "_dw_vbox");
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8407
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8408 if(!vbox)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8409 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8410 vbox = gtk_vbox_new(FALSE, 0);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8411 g_object_set_data(G_OBJECT(box), "_dw_vbox", vbox);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8412 gtk_container_add(GTK_CONTAINER(box), vbox);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8413 gtk_widget_show(vbox);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8414 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8415
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8416 gtk_container_set_border_width(GTK_CONTAINER(box), pad);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8417
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8418 if(GTK_IS_GRID(item) || (tmpitem && GTK_IS_GRID(tmpitem)))
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8419 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8420 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(item), "_dw_eventbox");
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8421
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8422 /* NOTE: I left in the ability to pack boxes with a size,
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8423 * this eliminates that by forcing the size to 0.
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8424 */
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8425 height = width = 0;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8426
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8427 if(eventbox)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8428 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
8429 int boxpad = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(item), "_dw_boxpad"));
1080
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8430 gtk_container_add(GTK_CONTAINER(eventbox), item);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8431 gtk_container_set_border_width(GTK_CONTAINER(eventbox), boxpad);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8432 item = eventbox;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8433 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8434 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8435 else
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8436 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8437 /* Only show warning if item is not a box */
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8438 warn = TRUE;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8439 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8440
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8441 gtk_box_pack_end(GTK_BOX(vbox), item, TRUE, TRUE, 0);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8442
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8443 gtk_widget_set_size_request(item, width, height);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8444 g_object_set_data(G_OBJECT(box), "_dw_user", vbox);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8445 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8446 DW_MUTEX_UNLOCK;
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8447
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8448 if(warn)
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8449 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8450 if ( width == 0 && hsize == FALSE )
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8451 dw_messagebox(funcname, DW_MB_OK|DW_MB_ERROR, "Width and expand Horizonal both unset for box: %x item: %x",box,item);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8452 if ( height == 0 && vsize == FALSE )
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8453 dw_messagebox(funcname, DW_MB_OK|DW_MB_ERROR, "Height and expand Vertical both unset for box: %x item: %x",box,item);
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8454 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8455 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8456
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8457 /*
1087
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8458 * Pack windows (widgets) into a box at an arbitrary location.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8459 * Parameters:
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8460 * box: Window handle of the box to be packed into.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8461 * item: Window handle of the item to be back.
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8462 * index: 0 based index of packed items.
1087
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8463 * width: Width in pixels of the item or -1 to be self determined.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8464 * height: Height in pixels of the item or -1 to be self determined.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8465 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8466 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8467 * pad: Number of pixels of padding around the item.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8468 */
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8469 void API dw_box_pack_at_index(HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad)
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8470 {
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8471 _dw_box_pack(box, item, index, width, height, hsize, vsize, pad, "dw_box_pack_at_index()");
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8472 }
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8473
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8474 /*
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8475 * Pack windows (widgets) into a box from the start (or top).
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8476 * Parameters:
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8477 * box: Window handle of the box to be packed into.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8478 * item: Window handle of the item to be back.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8479 * width: Width in pixels of the item or -1 to be self determined.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8480 * height: Height in pixels of the item or -1 to be self determined.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8481 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8482 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8483 * pad: Number of pixels of padding around the item.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8484 */
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8485 void API dw_box_pack_start(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad)
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8486 {
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8487 /* 65536 is the table limit on GTK...
1087
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8488 * seems like a high enough value we will never hit it here either.
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8489 */
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8490 _dw_box_pack(box, item, 65536, width, height, hsize, vsize, pad, "dw_box_pack_start()");
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8491 }
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8492
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8493 /*
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8494 * Pack windows (widgets) into a box from the end (or bottom).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8495 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8496 * box: Window handle of the box to be packed into.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8497 * item: Window handle of the item to be back.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8498 * width: Width in pixels of the item or -1 to be self determined.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8499 * height: Height in pixels of the item or -1 to be self determined.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8500 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8501 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8502 * pad: Number of pixels of padding around the item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8503 */
1087
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8504 void API dw_box_pack_end(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad)
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8505 {
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8506 _dw_box_pack(box, item, 0, width, height, hsize, vsize, pad, "dw_box_pack_end()");
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8507 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8508
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8509 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8510 * Sets the size of a given window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8511 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8512 * handle: Window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8513 * width: New width in pixels.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8514 * height: New height in pixels.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8515 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8516 void dw_window_set_size(HWND handle, unsigned long width, unsigned long height)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8517 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8518 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8519 long default_width = width - _dw_border_width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8520 long default_height = height - _dw_border_height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8521
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8522 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8523 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8524
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8525 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8526 if(GTK_IS_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8527 {
777
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
8528 GdkGeometry hints;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8529
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8530 if ( width == 0 )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8531 default_width = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8532 if ( height == 0 )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8533 default_height = -1;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8534
777
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
8535 hints.base_width = hints.base_height = 1;
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
8536 hints.min_width = hints.min_height = 8;
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
8537 hints.width_inc = hints.height_inc = 1;
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
8538
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
8539 gtk_window_set_geometry_hints(GTK_WINDOW(handle), NULL, &hints, GDK_HINT_RESIZE_INC|GDK_HINT_MIN_SIZE|GDK_HINT_BASE_SIZE);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8540
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8541 if(gtk_widget_get_window(handle) && default_width > 0 && default_height > 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8542 gdk_window_resize(gtk_widget_get_window(handle), default_width , default_height );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8543
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8544 gtk_window_set_default_size(GTK_WINDOW(handle), default_width , default_height );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8545 if(!g_object_get_data(G_OBJECT(handle), "_dw_size"))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8546 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8547 g_object_set_data(G_OBJECT(handle), "_dw_width", GINT_TO_POINTER(default_width) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8548 g_object_set_data(G_OBJECT(handle), "_dw_height", GINT_TO_POINTER(default_height) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8549 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8550 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8551 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8552 gtk_widget_set_size_request(handle, width, height);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8553 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8554 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8555
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8556 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8557 * Returns the width of the screen.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8558 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8559 int dw_screen_width(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8560 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8561 int retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8562 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8563
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8564 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8565 retval = gdk_screen_width();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8566 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8567 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8568 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8569
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8570 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8571 * Returns the height of the screen.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8572 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8573 int dw_screen_height(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8574 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8575 int retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8576 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8577
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8578 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8579 retval = gdk_screen_height();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8580 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8581 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8582 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8583
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8584 /* This should return the current color depth */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8585 unsigned long dw_color_depth_get(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8586 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8587 int retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8588 GdkVisual *vis;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8589 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8590
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8591 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8592 vis = gdk_visual_get_system();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8593 retval = gdk_visual_get_depth(vis);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8594 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8595 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8596 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8597
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8598 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8599 * Sets the position of a given window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8600 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8601 * handle: Window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8602 * x: X location from the bottom left.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8603 * y: Y location from the bottom left.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8604 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8605 void dw_window_set_pos(HWND handle, long x, long y)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8606 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8607 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8608 GtkWidget *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8609
1121
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8610 if(!handle)
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8611 return;
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8612
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8613 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8614 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8615 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8616 gtk_mdi_move(GTK_MDI(mdi), handle, x, y);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8617 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8618 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8619 {
1121
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8620 GdkWindow *window = NULL;
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8621
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8622 if(GTK_IS_WINDOW(handle))
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8623 gtk_window_move(GTK_WINDOW(handle), x, y);
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8624 else if((window = gtk_widget_get_window(handle)))
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8625 gdk_window_move(window, x, y);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8626 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8627 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8628 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8629
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8630 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8631 * Sets the position and size of a given window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8632 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8633 * handle: Window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8634 * x: X location from the bottom left.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8635 * y: Y location from the bottom left.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8636 * width: Width of the widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8637 * height: Height of the widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8638 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8639 void dw_window_set_pos_size(HWND handle, long x, long y, unsigned long width, unsigned long height)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8640 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8641 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8642 GtkWidget *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8643
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8644 if(!handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8645 return;
1121
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8646
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8647 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8648 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8649 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8650 gtk_mdi_move(GTK_MDI(mdi), handle, x, y);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8651 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8652 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8653 {
1121
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8654 GdkWindow *window = NULL;
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8655
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8656 if(GTK_IS_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8657 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8658 dw_window_set_size(handle, width, height);
1121
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8659 gtk_window_move(GTK_WINDOW(handle), x, y);
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8660 }
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8661 else if((window = gtk_widget_get_window(handle)))
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8662 {
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8663 gdk_window_resize(window, width, height);
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
8664 gdk_window_move(window, x, y);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8665 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8666 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8667 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8668 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8669
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8670 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8671 * Gets the position and size of a given window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8672 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8673 * handle: Window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8674 * x: X location from the bottom left.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8675 * y: Y location from the bottom left.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8676 * width: Width of the widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8677 * height: Height of the widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8678 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8679 void dw_window_get_pos_size(HWND handle, long *x, long *y, ULONG *width, ULONG *height)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8680 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8681 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8682 gint gx, gy, gwidth, gheight;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8683 GtkWidget *mdi;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8684
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8685 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8686 if((mdi = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_mdi")) && GTK_IS_MDI(mdi))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8687 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8688 gint myx=0, myy=0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8689
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8690 gtk_mdi_get_pos(GTK_MDI(mdi), handle, &myx, &myy);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8691 *x = myx;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8692 *y = myy;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8693 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8694 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8695 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8696 if(handle && gtk_widget_get_window(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8697 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8698
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8699 gdk_window_get_geometry(gtk_widget_get_window(handle), &gx, &gy, &gwidth, &gheight);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8700 gdk_window_get_root_origin(gtk_widget_get_window(handle), &gx, &gy);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8701 if(x)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8702 *x = gx;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8703 if(y)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8704 *y = gy;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8705 if(GTK_IS_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8706 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8707 if(width)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8708 *width = gwidth + _dw_border_width;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8709 if(height)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8710 *height = gheight + _dw_border_height;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8711 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8712 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8713 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8714 if(width)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8715 *width = gwidth;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8716 if(height)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8717 *height = gheight;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8718 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8719 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8720 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8721 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8722 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8723
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8724 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8725 * Sets the style of a given window (widget).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8726 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8727 * handle: Window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8728 * width: New width in pixels.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8729 * height: New height in pixels.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8730 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8731 void dw_window_set_style(HWND handle, unsigned long style, unsigned long mask)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8732 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8733 GtkWidget *handle2 = handle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8734 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8735
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8736 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8737 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8738 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8739 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8740 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8741 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8742 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8743 else if(GTK_IS_FRAME(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8744 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8745 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_label");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8746 if(tmp && GTK_IS_LABEL(tmp))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8747 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8748 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8749 else if(GTK_IS_BUTTON(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8750 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8751 if(mask & DW_BS_NOBORDER)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8752 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8753 if(style & DW_BS_NOBORDER)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8754 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8755 gtk_button_set_relief((GtkButton *)handle, GTK_RELIEF_NONE);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8756 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8757 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8758 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8759 gtk_button_set_relief((GtkButton *)handle, GTK_RELIEF_NORMAL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8760 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8761 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8762 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8763 if ( GTK_IS_LABEL(handle2) )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8764 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8765 gfloat x=DW_LEFT, y=DW_CENTER;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8766 /* horizontal... */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8767 if ( style & DW_DT_CENTER )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8768 x = DW_CENTER;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8769 if ( style & DW_DT_RIGHT )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8770 x = DW_RIGHT;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8771 if ( style & DW_DT_LEFT )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8772 x = DW_LEFT;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8773 /* vertical... */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8774 if ( style & DW_DT_VCENTER )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8775 y = DW_CENTER;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8776 if ( style & DW_DT_TOP )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8777 y = DW_TOP;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8778 if ( style & DW_DT_BOTTOM )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8779 y = DW_BOTTOM;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8780 gtk_misc_set_alignment( GTK_MISC(handle2), x, y );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8781 if ( style & DW_DT_WORDBREAK )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8782 gtk_label_set_line_wrap( GTK_LABEL(handle), TRUE );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8783 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8784 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8785 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8786
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8787 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8788 * Adds a new page to specified notebook.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8789 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8790 * handle: Window (widget) handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8791 * flags: Any additional page creation flags.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8792 * front: If TRUE page is added at the beginning.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8793 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8794 unsigned long dw_notebook_page_new(HWND handle, unsigned long flags, int front)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8795 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8796 int z;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8797 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8798 GtkWidget **pagearray;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8799
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8800 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8801 pagearray = (GtkWidget **)g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8802
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8803 if(pagearray)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8804 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8805 for(z=0;z<256;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8806 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8807 if(!pagearray[z])
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8808 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8809 char text[100];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8810 int num = z;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8811
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8812 if(front)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8813 num |= 1 << 16;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8814
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8815 sprintf(text, "_dw_page%d", z);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8816 /* Save the real id and the creation flags */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8817 g_object_set_data(G_OBJECT(handle), text, GINT_TO_POINTER(num));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8818 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8819 return z;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8820 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8821 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8822 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8823 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8824
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8825 /* Hopefully this won't happen. */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8826 return 256;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8827 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8828
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8829 /* Return the physical page id from the logical page id */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8830 int _get_physical_page(HWND handle, unsigned long pageid)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8831 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8832 int z;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8833 GtkWidget *thispage, **pagearray = g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8834
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8835 if(pagearray)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8836 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8837 for(z=0;z<256;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8838 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8839 if((thispage = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), z)))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8840 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8841 if(thispage == pagearray[pageid])
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8842 return z;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8843 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8844 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8845 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8846 return 256;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8847 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8848
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8849 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8850 * Remove a page from a notebook.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8851 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8852 * handle: Handle to the notebook widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8853 * pageid: ID of the page to be destroyed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8854 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8855 void dw_notebook_page_destroy(HWND handle, unsigned int pageid)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8856 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8857 int realpage, _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8858 GtkWidget **pagearray;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8859
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8860 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8861 realpage = _get_physical_page(handle, pageid);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8862 if(realpage > -1 && realpage < 256)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8863 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8864 gtk_notebook_remove_page(GTK_NOTEBOOK(handle), realpage);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8865 if((pagearray = g_object_get_data(G_OBJECT(handle), "_dw_pagearray")))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8866 pagearray[pageid] = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8867 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8868 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8869 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8870
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8871 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8872 * Queries the currently visible page ID.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8873 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8874 * handle: Handle to the notebook widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8875 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8876 unsigned long dw_notebook_page_get(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8877 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8878 int retval, phys;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8879 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8880
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8881 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8882 phys = gtk_notebook_get_current_page(GTK_NOTEBOOK(handle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8883 retval = _get_logical_page(handle, phys);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8884 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8885 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8886 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8887
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8888 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8889 * Sets the currently visibale page ID.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8890 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8891 * handle: Handle to the notebook widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8892 * pageid: ID of the page to be made visible.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8893 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8894 void dw_notebook_page_set(HWND handle, unsigned int pageid)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8895 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8896 int realpage, _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8897
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8898 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8899 realpage = _get_physical_page(handle, pageid);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8900 if(realpage > -1 && realpage < 256)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8901 gtk_notebook_set_current_page(GTK_NOTEBOOK(handle), pageid);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8902 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8903 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8904
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8905
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8906 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8907 * Sets the text on the specified notebook tab.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8908 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8909 * handle: Notebook handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8910 * pageid: Page ID of the tab to set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8911 * text: Pointer to the text to set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8912 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8913 void dw_notebook_page_set_text(HWND handle, unsigned long pageid, char *text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8914 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8915 GtkWidget *child;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8916 int realpage, _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8917
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8918 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8919 realpage = _get_physical_page(handle, pageid);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8920 if(realpage < 0 || realpage > 255)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8921 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8922 char ptext[100];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8923 int num;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8924
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8925 sprintf(ptext, "_dw_page%d", (int)pageid);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
8926 num = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), ptext));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8927 realpage = 0xFF & num;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8928 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8929
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8930 if(realpage > -1 && realpage < 256)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8931 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8932 child = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), realpage);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8933 if(child)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8934 gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(handle), child, text);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8935 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8936 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8937 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8938
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8939 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8940 * Sets the text on the specified notebook tab status area.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8941 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8942 * handle: Notebook handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8943 * pageid: Page ID of the tab to set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8944 * text: Pointer to the text to set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8945 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8946 void dw_notebook_page_set_status_text(HWND handle, unsigned long pageid, char *text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8947 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8948 /* TODO (if possible) */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8949 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8950
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8951 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8952 * Packs the specified box into the notebook page.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8953 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8954 * handle: Handle to the notebook to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8955 * pageid: Page ID in the notebook which is being packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8956 * page: Box handle to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8957 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8958 void dw_notebook_pack(HWND handle, unsigned long pageid, HWND page)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8959 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8960 GtkWidget *label, *child, *oldlabel, **pagearray;
790
1822c8a71936 Removed a now unused helper function and fixed a discared qualifier error.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 789
diff changeset
8961 const gchar *text = NULL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8962 int num, z, realpage = -1, pad, _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8963 char ptext[100];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8964
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8965 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8966 sprintf(ptext, "_dw_page%d", (int)pageid);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
8967 num = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), ptext));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8968 g_object_set_data(G_OBJECT(handle), ptext, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8969 pagearray = (GtkWidget **)g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8970
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8971 if(!pagearray)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8972 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8973 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8974 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8975 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8976
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8977 /* The page already exists... so get it's current page */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8978 if(pagearray[pageid])
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8979 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8980 for(z=0;z<256;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8981 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8982 child = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), z);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8983 if(child == pagearray[pageid])
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8984 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8985 oldlabel = gtk_notebook_get_tab_label(GTK_NOTEBOOK(handle), child);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8986 if(oldlabel)
789
8fe51d916b36 Reenabled the set-focus code that was disabled due to combobox issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 788
diff changeset
8987 text = gtk_label_get_text(GTK_LABEL(oldlabel));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8988 gtk_notebook_remove_page(GTK_NOTEBOOK(handle), z);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8989 realpage = z;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8990 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8991 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8992 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8993 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8994
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8995 pagearray[pageid] = page;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8996
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8997 label = gtk_label_new(text ? text : "");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8998
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8999 if(GTK_IS_GRID(page))
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9000 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
9001 pad = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(page), "_dw_boxpad"));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9002 gtk_container_set_border_width(GTK_CONTAINER(page), pad);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9003 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9004
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9005 if(realpage != -1)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9006 gtk_notebook_insert_page(GTK_NOTEBOOK(handle), page, label, realpage);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9007 else if(num & ~(0xFF))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9008 gtk_notebook_insert_page(GTK_NOTEBOOK(handle), page, label, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9009 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9010 gtk_notebook_insert_page(GTK_NOTEBOOK(handle), page, label, 256);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9011 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9012 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9013
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9014 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9015 * Appends the specified text to the listbox's (or combobox) entry list.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9016 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9017 * handle: Handle to the listbox to be appended to.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9018 * text: Text to append into listbox.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9019 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9020 void dw_listbox_append(HWND handle, char *text)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9021 {
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9022 dw_listbox_insert(handle, text, -1);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9023 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9024
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9025 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9026 * Inserts the specified text int the listbox's (or combobox) entry list at the
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9027 * position indicated.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9028 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9029 * handle: Handle to the listbox to be appended to.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9030 * text: Text to insert into listbox.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9031 * pos: 0-based index into listbox. -1 will append
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9032 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9033 void dw_listbox_insert(HWND handle, char *text, int pos)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9034 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9035 GtkWidget *handle2 = handle;
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9036 GtkListStore *store = NULL;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9037 int _locked_by_me = FALSE;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9038
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9039 DW_MUTEX_LOCK;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9040 /* Get the inner handle for scrolled controls */
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9041 if(GTK_IS_SCROLLED_WINDOW(handle))
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9042 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9043 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9044 if(tmp)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9045 handle2 = tmp;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9046 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9047 if(handle2)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9048 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9049 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9050
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9051 /* Make sure it is the correct tree type */
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9052 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9053 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9054 else if(GTK_IS_COMBO_BOX(handle2))
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9055 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9056
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9057 if(!store)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9058 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9059 DW_MUTEX_UNLOCK;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9060 return;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9061 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9062
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9063 if(pos < 0)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9064 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9065 /* Insert an entry at the end */
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9066 gtk_list_store_append(store, &iter);
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9067 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9068 else
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9069 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9070 /* Insert at position */
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9071 gtk_list_store_insert(store, &iter, pos);
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9072 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9073 gtk_list_store_set (store, &iter, 0, text, -1);
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9074 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9075 DW_MUTEX_UNLOCK;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9076 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9077
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9078 /*
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9079 * Appends the specified text items to the listbox's (or combobox) entry list.
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9080 * Parameters:
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9081 * handle: Handle to the listbox to be appended to.
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9082 * text: Text strings to append into listbox.
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9083 * count: Number of text strings to append
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9084 */
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9085 void dw_listbox_list_append(HWND handle, char **text, int count)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9086 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9087 GtkWidget *handle2 = handle;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9088 GtkListStore *store = NULL;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9089 int _locked_by_me = FALSE;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9090
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9091 DW_MUTEX_LOCK;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9092 /* Get the inner handle for scrolled controls */
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9093 if(GTK_IS_SCROLLED_WINDOW(handle))
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9094 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9095 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9096 if(tmp)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9097 handle2 = tmp;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9098 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9099 if(handle2)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9100 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9101 int z;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9102 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9103
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9104 /* Make sure it is the correct tree type */
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9105 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9106 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9107 else if(GTK_IS_COMBO_BOX(handle2))
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9108 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9109
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9110 if(!store)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9111 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9112 DW_MUTEX_UNLOCK;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9113 return;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9114 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9115
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9116 /* Insert entries at the end */
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9117 for(z=0;z<count;z++)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9118 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9119 gtk_list_store_append(store, &iter);
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9120 gtk_list_store_set (store, &iter, 0, text[z], -1);
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9121 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9122 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9123 DW_MUTEX_UNLOCK;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9124 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9125
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9126 /*
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9127 * Clears the listbox's (or combobox) list of all entries.
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9128 * Parameters:
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9129 * handle: Handle to the listbox to be cleared.
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9130 */
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9131 void dw_listbox_clear(HWND handle)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9132 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9133 GtkWidget *handle2 = handle;
777
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9134 GtkListStore *store = NULL;
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9135 int _locked_by_me = FALSE;
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9136
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9137 DW_MUTEX_LOCK;
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9138 /* Get the inner handle for scrolled controls */
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9139 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9140 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9141 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9142 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9143 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9144 }
777
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9145 if(handle2)
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9146 {
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9147 /* Make sure it is the correct tree type */
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9148 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9149 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
777
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9150 else if(GTK_IS_COMBO_BOX(handle2))
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9151 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9152
777
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9153 if(!store)
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9154 {
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9155 DW_MUTEX_UNLOCK;
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9156 return;
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9157 }
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9158 /* Clear the list */
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9159 gtk_list_store_clear(store);
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9160 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9161 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9162 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9163
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9164 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9165 * Returns the listbox's item count.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9166 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9167 * handle: Handle to the listbox to be counted
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9168 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9169 int dw_listbox_count(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9170 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9171 GtkWidget *handle2 = handle;
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9172 GtkListStore *store = NULL;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9173 int _locked_by_me = FALSE;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9174 int retval = 0;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9175
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9176 DW_MUTEX_LOCK;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9177 /* Get the inner handle for scrolled controls */
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9178 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9179 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9180 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9181 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9182 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9183 }
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9184 if(handle2)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9185 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9186 /* Make sure it is the correct tree type */
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9187 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9188 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9189 else if(GTK_IS_COMBO_BOX(handle2))
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9190 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9191
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9192 if(store)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9193 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9194 /* Get the number of children at the top level */
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9195 retval = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9196 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9197 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9198 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9199 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9200 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9201
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9202 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9203 * Sets the topmost item in the viewport.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9204 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9205 * handle: Handle to the listbox to be cleared.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9206 * top: Index to the top item.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9207 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9208 void dw_listbox_set_top(HWND handle, int top)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9209 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9210 GtkWidget *handle2 = handle;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9211 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9212
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9213 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9214 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9215 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9216 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9217 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9218 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9219 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9220
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9221 /* Make sure it is the correct tree type */
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9222 if(handle2 && GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9223 {
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9224 GtkAdjustment *adjust = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(handle2));
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9225 GtkListStore *store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9226
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9227 if(store && adjust)
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9228 {
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9229 /* Get the number of children at the top level */
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9230 gint rowcount = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9231 gdouble upper = gtk_adjustment_get_upper(adjust);
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9232 gdouble lower = gtk_adjustment_get_lower(adjust);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9233 gdouble change;
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9234
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9235 /* Safety check */
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9236 if(rowcount < 1)
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9237 {
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9238 DW_MUTEX_UNLOCK;
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9239 return;
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9240 }
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9241
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9242 change = ((gdouble)top/(gdouble)rowcount) * (upper - lower);
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9243
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9244 gtk_adjustment_set_value(adjust, change + lower);
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9245 }
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9246 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9247 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9248 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9249
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9250 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9251 * Copies the given index item's text into buffer.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9252 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9253 * handle: Handle to the listbox to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9254 * index: Index into the list to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9255 * buffer: Buffer where text will be copied.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9256 * length: Length of the buffer (including NULL).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9257 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9258 void dw_listbox_get_text(HWND handle, unsigned int index, char *buffer, unsigned int length)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9259 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9260 GtkWidget *handle2 = handle;
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9261 GtkListStore *store = NULL;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9262 int _locked_by_me = FALSE;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9263
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9264 DW_MUTEX_LOCK;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9265 /* Get the inner handle for scrolled controls */
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9266 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9267 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9268 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9269 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9270 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9271 }
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9272 if(handle2)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9273 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9274 /* Make sure it is the correct tree type */
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9275 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9276 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9277 else if(GTK_IS_COMBO_BOX(handle2))
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9278 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9279
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9280 if(store && index < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9281 {
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9282 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9283
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9284 /* Get the nth child at the top level */
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9285 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9286 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9287 /* Get the text */
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9288 gchar *text;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9289 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 0, &text, -1);
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9290 strncpy(buffer, text, length);
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9291 DW_MUTEX_UNLOCK;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9292 return;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9293 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9294 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9295 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9296 buffer[0] = '\0';
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9297 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9298 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9299
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9300 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9301 * Sets the text of a given listbox entry.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9302 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9303 * handle: Handle to the listbox to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9304 * index: Index into the list to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9305 * buffer: Buffer where text will be copied.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9306 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9307 void dw_listbox_set_text(HWND handle, unsigned int index, char *buffer)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9308 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9309 GtkWidget *handle2 = handle;
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9310 GtkListStore *store = NULL;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9311 int _locked_by_me = FALSE;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9312
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9313 DW_MUTEX_LOCK;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9314 /* Get the inner handle for scrolled controls */
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9315 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9316 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9317 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9318 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9319 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9320 }
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9321 if(handle2)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9322 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9323 /* Make sure it is the correct tree type */
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9324 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9325 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9326 else if(GTK_IS_COMBO_BOX(handle2))
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9327 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9328
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9329 if(store && index < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9330 {
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9331 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9332
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9333 /* Get the nth child at the top level */
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9334 if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9335 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9336 /* Update the text */
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9337 gtk_list_store_set(store, &iter, buffer);
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9338 }
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9339 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9340 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9341 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9342 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9343
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9344 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9345 * Returns the index to the current selected item or -1 when done.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9346 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9347 * handle: Handle to the listbox to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9348 * where: Either the previous return or -1 to restart.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9349 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9350 int dw_listbox_selected_multi(HWND handle, int where)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9351 {
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9352 GtkWidget *handle2;
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9353 GtkListStore *store = NULL;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9354 int retval = DW_LIT_NONE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9355 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9356
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9357 DW_MUTEX_LOCK;
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9358 handle2 = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9359
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9360 /* Make sure it is the correct tree type */
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9361 if(handle2 && GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9362 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9363
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9364 if(store)
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9365 {
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9366 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(handle2));
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9367 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9368
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9369 if(list)
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9370 {
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9371 int counter = 0;
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9372 GtkTreePath *path = g_list_nth_data(list, 0);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9373
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9374 while(path)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9375 {
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9376 gint *indices = gtk_tree_path_get_indices(path);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9377
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9378 if(indices && indices[0] > where)
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9379 {
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9380 retval = indices[0];
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9381 break;
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9382 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9383
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9384 counter++;
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9385 path = g_list_nth_data(list, counter);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9386 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9387
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9388 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9389 g_list_free(list);
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9390 }
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
9391 }
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
9392 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9393 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9394 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9395
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9396 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9397 * Returns the index to the item in the list currently selected.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9398 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9399 * handle: Handle to the listbox to be queried.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9400 */
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 976
diff changeset
9401 int dw_listbox_selected(HWND handle)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9402 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9403 GtkWidget *handle2 = handle;
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9404 GtkListStore *store = NULL;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9405 int _locked_by_me = FALSE;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9406 unsigned int retval = 0;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9407
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9408 DW_MUTEX_LOCK;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9409 /* Get the inner handle for scrolled controls */
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9410 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9411 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9412 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9413 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9414 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9415 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9416 if(handle2)
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9417 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9418 /* Make sure it is the correct tree type */
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9419 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9420 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9421 else if(GTK_IS_COMBO_BOX(handle2))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9422 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9423
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9424 if(store)
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9425 {
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9426 if(GTK_IS_TREE_VIEW(handle2))
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9427 {
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9428 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(handle2));
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9429 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9430 if(list)
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9431 {
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9432 GtkTreePath *path = g_list_nth_data(list, 0);
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9433 gint *indices = gtk_tree_path_get_indices(path);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9434
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9435 if(indices)
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9436 {
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9437 retval = indices[0];
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9438 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9439
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9440 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9441 g_list_free(list);
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9442 }
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9443 }
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9444 else
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9445 {
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9446 GtkTreeIter iter;
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9447 GtkTreePath *path;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9448
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
9449 if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(handle2), &iter))
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9450 {
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
9451 path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
9452 if(path)
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
9453 {
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
9454 gint *indices = gtk_tree_path_get_indices(path);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9455
883
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
9456 if(indices)
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
9457 {
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
9458 retval = indices[0];
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
9459 }
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
9460 gtk_tree_path_free(path);
63a8e77191c7 Experimental changes to the containers so filsystem icon and name are same column for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 877
diff changeset
9461 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9462 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9463 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9464 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9465 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9466 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9467 return retval;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9468 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9469
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9470 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9471 * Sets the selection state of a given index.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9472 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9473 * handle: Handle to the listbox to be set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9474 * index: Item index.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9475 * state: TRUE if selected FALSE if unselected.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9476 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9477 void dw_listbox_select(HWND handle, int index, int state)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9478 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9479 GtkWidget *handle2 = handle;
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9480 GtkListStore *store = NULL;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9481 int _locked_by_me = FALSE;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9482
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9483 DW_MUTEX_LOCK;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9484 /* Get the inner handle for scrolled controls */
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9485 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9486 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9487 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9488 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9489 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9490 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9491 if(handle2)
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9492 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9493 /* Make sure it is the correct tree type */
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9494 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9495 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9496 else if(GTK_IS_COMBO_BOX(handle2))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9497 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9498
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9499 if(store && index < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9500 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9501 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9502
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9503 /* Get the nth child at the top level */
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9504 if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9505 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9506 if(GTK_IS_COMBO_BOX(handle2))
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9507 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9508 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(handle2), &iter);
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9509 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9510 else
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9511 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9512 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(handle2));
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9513 if(state)
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9514 {
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9515 /* Select the item */
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9516 gtk_tree_selection_select_iter(sel, &iter);
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9517 }
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9518 else
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9519 {
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9520 /* Deselect the item */
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9521 gtk_tree_selection_unselect_iter(sel, &iter);
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
9522 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9523 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9524 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9525 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9526 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9527 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9528 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9529
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9530 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9531 * Deletes the item with given index from the list.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9532 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9533 * handle: Handle to the listbox to be set.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9534 * index: Item index.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9535 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9536 void dw_listbox_delete(HWND handle, int index)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9537 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9538 GtkWidget *handle2 = handle;
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9539 GtkListStore *store = NULL;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9540 int _locked_by_me = FALSE;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9541
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9542 DW_MUTEX_LOCK;
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9543 /* Get the inner handle for scrolled controls */
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9544 if(GTK_IS_SCROLLED_WINDOW(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9545 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9546 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9547 if(tmp)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9548 handle2 = tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9549 }
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9550 if(handle2)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9551 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9552 /* Make sure it is the correct tree type */
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9553 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9554 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9555 else if(GTK_IS_COMBO_BOX(handle2))
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
9556 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9557
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9558 if(store)
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9559 {
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9560 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9561
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9562 /* Get the nth child at the top level */
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9563 if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9564 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9565 gtk_list_store_remove(store, &iter);
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9566 }
778
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9567 }
99ce0ea1f271 Implemented many of the dw_listbox_* functions using the new tree view for comboboxes and listboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 777
diff changeset
9568 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9569 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9570 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9571
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9572 /* Reposition the bar according to the percentage */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9573 static gint _splitbar_size_allocate(GtkWidget *widget, GtkAllocation *event, gpointer data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9574 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9575 float *percent = (float *)g_object_get_data(G_OBJECT(widget), "_dw_percent");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9576
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9577 /* Prevent infinite recursion ;) */
1005
751522e9f3ac Switchted to using dw_paned_pack*() to pack the splitbar on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1001
diff changeset
9578 if(!percent || event->width < 20 || event->height < 20)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9579 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9580
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9581 if(GTK_IS_HPANED(widget))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9582 gtk_paned_set_position(GTK_PANED(widget), (int)(event->width * (*percent / 100.0)));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9583 if(GTK_IS_VPANED(widget))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9584 gtk_paned_set_position(GTK_PANED(widget), (int)(event->height * (*percent / 100.0)));
1005
751522e9f3ac Switchted to using dw_paned_pack*() to pack the splitbar on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1001
diff changeset
9585 g_object_set_data(G_OBJECT(widget), "_dw_percent", NULL);
751522e9f3ac Switchted to using dw_paned_pack*() to pack the splitbar on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1001
diff changeset
9586 free(percent);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9587 return FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9588 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9589
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9590 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9591 * Creates a splitbar window (widget) with given parameters.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9592 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9593 * type: Value can be DW_VERT or DW_HORZ.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9594 * topleft: Handle to the window to be top or left.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9595 * bottomright: Handle to the window to be bottom or right.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9596 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9597 * A handle to a splitbar window or NULL on failure.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9598 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9599 HWND dw_splitbar_new(int type, HWND topleft, HWND bottomright, unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9600 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9601 GtkWidget *tmp = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9602 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9603 float *percent = malloc(sizeof(float));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9604
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9605 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9606 if(type == DW_HORZ)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9607 tmp = gtk_hpaned_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9608 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9609 tmp = gtk_vpaned_new();
1125
95d7eb4e85c6 The shrink flag on GtkPanded (splitbar) in GTK 3 causes tons
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1124
diff changeset
9610 gtk_paned_pack1(GTK_PANED(tmp), topleft, TRUE, FALSE);
95d7eb4e85c6 The shrink flag on GtkPanded (splitbar) in GTK 3 causes tons
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1124
diff changeset
9611 gtk_paned_pack2(GTK_PANED(tmp), bottomright, TRUE, FALSE);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9612 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9613 *percent = 50.0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9614 g_object_set_data(G_OBJECT(tmp), "_dw_percent", (gpointer)percent);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9615 g_signal_connect(G_OBJECT(tmp), "size-allocate", G_CALLBACK(_splitbar_size_allocate), NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9616 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9617 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9618 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9619 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9620
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9621 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9622 * Sets the position of a splitbar (pecentage).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9623 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9624 * handle: The handle to the splitbar returned by dw_splitbar_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9625 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9626 void dw_splitbar_set(HWND handle, float percent)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9627 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9628 float *mypercent = (float *)dw_window_get_data(handle, "_dw_percent");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9629 int size = 0, position;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9630
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9631 if(GTK_IS_VPANED(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9632 size = gtk_widget_get_allocated_height(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9633 else if(GTK_IS_HPANED(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9634 size = gtk_widget_get_allocated_width(handle);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9635
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9636 if(mypercent)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9637 *mypercent = percent;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9638
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9639 if(size > 10)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9640 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9641 position = (int)((float)size * (percent / 100.0));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9642
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9643 gtk_paned_set_position(GTK_PANED(handle), position);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9644 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9645 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9646
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9647 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9648 * Gets the position of a splitbar (pecentage).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9649 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9650 * handle: The handle to the splitbar returned by dw_splitbar_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9651 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9652 float dw_splitbar_get(HWND handle)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9653 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9654 float *percent = (float *)dw_window_get_data(handle, "_dw_percent");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9655
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9656 if(percent)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9657 return *percent;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9658 return 0.0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9659 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9660
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9661 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9662 * Creates a calendar window (widget) with given parameters.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9663 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9664 * id: Unique identifier for calendar widget
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9665 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9666 * A handle to a calendar window or NULL on failure.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9667 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9668 HWND dw_calendar_new(unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9669 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9670 GtkWidget *tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9671 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9672 GtkCalendarDisplayOptions flags;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9673 time_t now;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9674 struct tm *tmdata;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9675
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9676 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9677 tmp = gtk_calendar_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9678 gtk_widget_show(tmp);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9679 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9680 /* select today */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9681 flags = GTK_CALENDAR_SHOW_HEADING|GTK_CALENDAR_SHOW_DAY_NAMES;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9682 gtk_calendar_set_display_options( GTK_CALENDAR(tmp), flags );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9683 now = time( NULL );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9684 tmdata = localtime( & now );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9685 gtk_calendar_select_month( GTK_CALENDAR(tmp), tmdata->tm_mon, 1900+tmdata->tm_year );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9686 gtk_calendar_select_day( GTK_CALENDAR(tmp), tmdata->tm_mday );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9687
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9688 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9689 return tmp;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9690 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9691
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9692 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9693 * Sets the current date of a calendar
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9694 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9695 * handle: The handle to the calendar returned by dw_calendar_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9696 * year...
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9697 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9698 void dw_calendar_set_date(HWND handle, unsigned int year, unsigned int month, unsigned int day)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9699 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9700 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9701
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9702 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9703 if(GTK_IS_CALENDAR(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9704 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9705 gtk_calendar_select_month(GTK_CALENDAR(handle),month-1,year);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9706 gtk_calendar_select_day(GTK_CALENDAR(handle), day);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9707 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9708 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9709 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9710 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9711
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9712 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9713 * Gets the position of a splitbar (pecentage).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9714 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9715 * handle: The handle to the splitbar returned by dw_splitbar_new().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9716 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9717 void dw_calendar_get_date(HWND handle, unsigned int *year, unsigned int *month, unsigned int *day)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9718 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9719 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9720
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9721 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9722 if(GTK_IS_CALENDAR(handle))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9723 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9724 gtk_calendar_get_date(GTK_CALENDAR(handle),year,month,day);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9725 *month = *month + 1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9726 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9727 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9728 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9729 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9730
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9731 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9732 * Sets the default focus item for a window/dialog.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9733 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9734 * window: Toplevel window or dialog.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9735 * defaultitem: Handle to the dialog item to be default.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9736 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9737 void dw_window_default(HWND window, HWND defaultitem)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9738 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9739 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9740
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9741 if(!window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9742 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9743
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9744 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9745 g_object_set_data(G_OBJECT(window), "_dw_defaultitem", (gpointer)defaultitem);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9746 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9747 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9748
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9749 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9750 * Sets window to click the default dialog item when an ENTER is pressed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9751 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9752 * window: Window (widget) to look for the ENTER press.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9753 * next: Window (widget) to move to next (or click)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9754 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9755 void dw_window_click_default(HWND window, HWND next)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9756 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9757 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9758
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9759 if(!window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9760 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9761
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9762 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9763 g_signal_connect(G_OBJECT(window), "key_press_event", G_CALLBACK(_default_key_press_event), next);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9764 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9765 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9766
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9767 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9768 * Returns some information about the current operating environment.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9769 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9770 * env: Pointer to a DWEnv struct.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9771 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9772 void dw_environment_query(DWEnv *env)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9773 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9774 struct utsname name;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9775 char tempbuf[100];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9776 int len, z;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9777
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9778 uname(&name);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9779 strcpy(env->osName, name.sysname);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9780 strcpy(tempbuf, name.release);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9781
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9782 env->MajorBuild = env->MinorBuild = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9783
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9784 len = strlen(tempbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9785
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9786 strcpy(env->buildDate, __DATE__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9787 strcpy(env->buildTime, __TIME__);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9788 env->DWMajorVersion = DW_MAJOR_VERSION;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9789 env->DWMinorVersion = DW_MINOR_VERSION;
1160
924c8087a755 Attempt to use the subversion revision number as the sub version number.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1158
diff changeset
9790 #ifdef VER_REV
1161
e4b13cd7a002 Update configure script and fix a miscommit of the GTK3 code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
9791 env->DWSubVersion = VER_REV;
1160
924c8087a755 Attempt to use the subversion revision number as the sub version number.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1158
diff changeset
9792 #else
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9793 env->DWSubVersion = DW_SUB_VERSION;
1160
924c8087a755 Attempt to use the subversion revision number as the sub version number.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1158
diff changeset
9794 #endif
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9795
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9796 for(z=1;z<len;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9797 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9798 if(tempbuf[z] == '.')
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9799 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9800 tempbuf[z] = '\0';
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9801 env->MajorVersion = atoi(&tempbuf[z-1]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9802 env->MinorVersion = atoi(&tempbuf[z+1]);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9803 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9804 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9805 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9806 env->MajorVersion = atoi(tempbuf);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9807 env->MinorVersion = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9808 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9809
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9810 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9811 * Opens a file dialog and queries user selection.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9812 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9813 * title: Title bar text for dialog.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9814 * defpath: The default path of the open dialog.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9815 * ext: Default file extention.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9816 * flags: DW_FILE_OPEN or DW_FILE_SAVE or DW_DIRECTORY_OPEN
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9817 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9818 * NULL on error. A malloced buffer containing
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9819 * the file path on success.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9820 *
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9821 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9822 char *dw_file_browse(char *title, char *defpath, char *ext, int flags)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9823 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9824 GtkWidget *filew;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9825
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9826 GtkFileChooserAction action;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9827 GtkFileFilter *filter1 = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9828 GtkFileFilter *filter2 = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9829 gchar *button;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9830 char *filename = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9831 char buf[1000];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9832 char mypath[PATH_MAX+1];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9833
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9834 switch (flags )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9835 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9836 case DW_DIRECTORY_OPEN:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9837 action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9838 button = GTK_STOCK_OPEN;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9839 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9840 case DW_FILE_OPEN:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9841 action = GTK_FILE_CHOOSER_ACTION_OPEN;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9842 button = GTK_STOCK_OPEN;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9843 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9844 case DW_FILE_SAVE:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9845 action = GTK_FILE_CHOOSER_ACTION_SAVE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9846 button = GTK_STOCK_SAVE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9847 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9848 default:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9849 dw_messagebox( "Coding error", DW_MB_OK|DW_MB_ERROR, "dw_file_browse() flags argument invalid.");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9850 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9851 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9852 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9853
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9854 filew = gtk_file_chooser_dialog_new ( title,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9855 NULL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9856 action,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9857 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9858 button, GTK_RESPONSE_ACCEPT,
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9859 NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9860
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9861 if ( flags == DW_FILE_SAVE )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9862 gtk_file_chooser_set_do_overwrite_confirmation( GTK_FILE_CHOOSER( filew ), TRUE );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9863
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9864 if ( ext )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9865 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9866 filter1 = gtk_file_filter_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9867 sprintf( buf, "*.%s", ext );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9868 gtk_file_filter_add_pattern( filter1, (gchar *)buf );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9869 sprintf( buf, "\"%s\" files", ext );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9870 gtk_file_filter_set_name( filter1, (gchar *)buf );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9871 filter2 = gtk_file_filter_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9872 gtk_file_filter_add_pattern( filter2, (gchar *)"*" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9873 gtk_file_filter_set_name( filter2, (gchar *)"All Files" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9874 gtk_file_chooser_add_filter( GTK_FILE_CHOOSER( filew ), filter1 );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9875 gtk_file_chooser_add_filter( GTK_FILE_CHOOSER( filew ), filter2 );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9876 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9877
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9878 if ( defpath )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9879 {
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9880 if ( g_path_is_absolute( defpath ) || !realpath(defpath, mypath))
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9881 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9882 strcpy( mypath, defpath );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9883 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9884 gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER( filew ), mypath );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9885 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9886
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9887 if ( gtk_dialog_run( GTK_DIALOG( filew ) ) == GTK_RESPONSE_ACCEPT )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9888 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9889 filename = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER( filew ) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9890 /*g_free (filename);*/
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9891 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9892
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9893 gtk_widget_destroy( filew );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9894 return filename;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9895 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9896
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9897
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9898 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9899 * Execute and external program in a seperate session.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9900 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9901 * program: Program name with optional path.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9902 * type: Either DW_EXEC_CON or DW_EXEC_GUI.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9903 * params: An array of pointers to string arguements.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9904 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9905 * -1 on error.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9906 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9907 int dw_exec(char *program, int type, char **params)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9908 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9909 int ret = -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9910
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9911 if((ret = fork()) == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9912 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9913 int i;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9914
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9915 for (i = 3; i < 256; i++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9916 close(i);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9917 setsid();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9918 if(type == DW_EXEC_GUI)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9919 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9920 execvp(program, params);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9921 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9922 else if(type == DW_EXEC_CON)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9923 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9924 char **tmpargs;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9925
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9926 if(!params)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9927 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9928 tmpargs = malloc(sizeof(char *));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9929 tmpargs[0] = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9930 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9931 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9932 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9933 int z = 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9934
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9935 while(params[z])
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9936 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9937 z++;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9938 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9939 tmpargs = malloc(sizeof(char *)*(z+3));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9940 z=0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9941 tmpargs[0] = "xterm";
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9942 tmpargs[1] = "-e";
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9943 while(params[z])
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9944 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9945 tmpargs[z+2] = params[z];
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9946 z++;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9947 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9948 tmpargs[z+2] = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9949 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9950 execvp("xterm", tmpargs);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9951 free(tmpargs);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9952 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9953 /* If we got here exec failed */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9954 _exit(-1);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9955 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9956 return ret;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9957 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9958
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9959 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9960 * Loads a web browser pointed at the given URL.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9961 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9962 * url: Uniform resource locator.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9963 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9964 int dw_browse(char *url)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9965 {
1118
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9966 /* If possible load the URL/URI using gvfs... */
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9967 if(gtk_show_uri(gdk_screen_get_default(), url, GDK_CURRENT_TIME, NULL))
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9968 {
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9969 return DW_ERROR_NONE;
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9970 }
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9971 else
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9972 {
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9973 /* Otherwise just fall back to executing firefox...
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9974 * or the browser defined by the DW_BROWSER variable.
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9975 */
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9976 char *execargs[3], *browser = "firefox", *tmp;
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9977
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9978 tmp = getenv( "DW_BROWSER" );
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9979 if(tmp) browser = tmp;
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9980 execargs[0] = browser;
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9981 execargs[1] = url;
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9982 execargs[2] = NULL;
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9983
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9984 return dw_exec(browser, DW_EXEC_GUI, execargs);
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
9985 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9986 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9987
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9988 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9989 * Causes the embedded HTML widget to take action.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9990 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9991 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9992 * action: One of the DW_HTML_* constants.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9993 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9994 void dw_html_action(HWND handle, int action)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9995 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9996 #ifdef USE_GTKMOZEMBED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9997 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9998
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9999 if(!_gtk_moz_embed_new)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10000 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10001
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10002 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10003 switch(action)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10004 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10005 case DW_HTML_GOBACK:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10006 _gtk_moz_embed_go_back(GTK_MOZ_EMBED(handle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10007 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10008 case DW_HTML_GOFORWARD:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10009 _gtk_moz_embed_go_forward(GTK_MOZ_EMBED(handle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10010 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10011 case DW_HTML_GOHOME:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10012 _gtk_moz_embed_load_url(GTK_MOZ_EMBED(handle), "http://dwindows.netlabs.org");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10013 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10014 case DW_HTML_RELOAD:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10015 _gtk_moz_embed_reload(GTK_MOZ_EMBED(handle), 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10016 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10017 case DW_HTML_STOP:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10018 _gtk_moz_embed_stop_load(GTK_MOZ_EMBED(handle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10019 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10020 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10021 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10022 #elif defined(USE_WEBKIT)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10023 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10024 WebKitWebView *web_view;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10025 WebKitWebFrame *frame;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10026
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10027 if (!_webkit_web_view_open)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10028 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10029
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10030 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10031 web_view = (WebKitWebView *)g_object_get_data(G_OBJECT(handle), "_dw_web_view");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10032 if ( web_view )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10033 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10034 switch( action )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10035 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10036 case DW_HTML_GOBACK:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10037 _webkit_web_view_go_back( web_view );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10038 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10039 case DW_HTML_GOFORWARD:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10040 _webkit_web_view_go_forward( web_view );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10041 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10042 case DW_HTML_GOHOME:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10043 _webkit_web_view_open( web_view, "http://dwindows.netlabs.org" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10044 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10045 case DW_HTML_RELOAD:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10046 _webkit_web_view_reload( web_view );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10047 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10048 case DW_HTML_STOP:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10049 _webkit_web_view_stop_loading( web_view );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10050 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10051 # ifdef WEBKIT_CHECK_VERSION
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10052 # if WEBKIT_CHECK_VERSION(1,1,5)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10053 case DW_HTML_PRINT:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10054 frame = _webkit_web_view_get_focused_frame( web_view );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10055 _webkit_web_frame_print( frame );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10056 break;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10057 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10058 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10059 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10060 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10061 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10062 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10063 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10064
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10065 #ifdef USE_LIBGTKHTML2
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10066 void _dw_html_render_data( HWND handle, char *string, int i )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10067 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10068 HtmlDocument *document;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10069
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10070 html_view_set_document (HTML_VIEW(handle), NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10071 document = (HtmlDocument *)g_object_get_data(G_OBJECT(handle), "_dw_html_document" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10072 /* html_document_clear (document);*/
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10073 if ( document )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10074 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10075 html_view_set_document (HTML_VIEW(handle), document);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10076 if ( html_document_open_stream( document, "text/html" ) )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10077 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10078 html_document_write_stream( document, string, i );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10079 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10080 html_document_close_stream (document);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10081 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10082 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10083 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10084 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10085 * Render raw HTML code in the embedded HTML widget..
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10086 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10087 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10088 * string: String buffer containt HTML code to
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10089 * be rendered.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10090 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10091 * 0 on success.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10092 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10093 int dw_html_raw(HWND handle, char *string)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10094 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10095 #ifdef USE_GTKMOZEMBED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10096 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10097
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10098 if (!_gtk_moz_embed_new)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10099 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10100
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10101 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10102 _gtk_moz_embed_render_data(GTK_MOZ_EMBED(handle), string, strlen(string), "file:///", "text/html");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10103 gtk_widget_show(GTK_WIDGET(handle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10104 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10105 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10106 #elif defined(USE_LIBGTKHTML2)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10107 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10108
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10109 if ( !_html_document_new )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10110 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10111
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10112 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10113 _dw_html_render_data( handle, string, strlen(string) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10114 gtk_widget_show( GTK_WIDGET(handle) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10115 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10116 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10117 #elif defined(USE_WEBKIT)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10118 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10119 WebKitWebView *web_view;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10120
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10121 if (!_webkit_web_view_open)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10122 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10123
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10124 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10125 web_view = (WebKitWebView *)g_object_get_data(G_OBJECT(handle), "_dw_web_view");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10126 if ( web_view )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10127 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10128 _webkit_web_view_load_html_string( web_view, string, "file:///");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10129 gtk_widget_show( GTK_WIDGET(handle) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10130 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10131 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10132 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10133 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10134 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10135 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10136
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10137 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10138 * Render file or web page in the embedded HTML widget..
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10139 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10140 * handle: Handle to the window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10141 * url: Universal Resource Locator of the web or
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10142 * file object to be rendered.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10143 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10144 * 0 on success.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10145 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10146 int dw_html_url(HWND handle, char *url)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10147 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10148 #ifdef USE_GTKMOZEMBED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10149 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10150
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10151 if (!_gtk_moz_embed_new)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10152 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10153
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10154 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10155 _gtk_moz_embed_load_url( GTK_MOZ_EMBED(handle), url );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10156 gtk_widget_show(GTK_WIDGET(handle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10157 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10158 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10159 #elif defined( USE_WEBKIT )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10160 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10161 WebKitWebView *web_view;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10162
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10163 if (!_webkit_web_view_open)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10164 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10165
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10166 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10167 web_view = (WebKitWebView *)g_object_get_data(G_OBJECT(handle), "_dw_web_view");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10168 if ( web_view )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10169 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10170 _webkit_web_view_open( web_view, url );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10171 gtk_widget_show(GTK_WIDGET(handle));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10172 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10173 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10174 return 0;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10175 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10176 return -1;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10177 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10178
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10179 #ifdef USE_GTKMOZEMBED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10180 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10181 * Callback for a HTML widget when the "Forward" menu item is selected
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10182 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10183 static int _dw_html_forward_callback(HWND window, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10184 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10185 HWND handle=(HWND)data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10186 dw_html_action( handle, DW_HTML_GOFORWARD );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10187 return TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10188 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10189
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10190 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10191 * Callback for a HTML widget when the "Back" menu item is selected
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10192 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10193 static int _dw_html_backward_callback(HWND window, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10194 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10195 HWND handle=(HWND)data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10196 dw_html_action( handle, DW_HTML_GOBACK );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10197 return TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10198 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10199
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10200 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10201 * Callback for a HTML widget when the "Reload" menu item is selected
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10202 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10203 static int _dw_html_reload_callback(HWND window, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10204 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10205 HWND handle=(HWND)data;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10206 dw_html_action( handle, DW_HTML_RELOAD );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10207 return TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10208 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10209
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10210 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10211 * Callback for a HTML widget when a page has completed loading
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10212 * Once the page has finished loading, show the widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10213 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10214 void _dw_html_net_stop_cb( GtkMozEmbed *embed, gpointer data )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10215 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10216 gtk_widget_show(GTK_WIDGET(data));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10217 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10218
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10219 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10220 * Callback for a HTML widget when a mouse button is clicked inside the widget
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10221 * If the right mouse button is clicked, popup a context menu
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10222 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10223 static gint _dw_dom_mouse_click_cb (GtkMozEmbed *dummy, gpointer dom_event, gpointer embed)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10224 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10225 gint button,rc;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10226 glong x,y;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10227 int flags;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10228
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10229 button = mozilla_get_mouse_event_button( dom_event );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10230 if ( button == 2 )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10231 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10232 HWND menuitem;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10233 HMENUI popup;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10234 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10235 * Right mouse button; display context menu
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10236 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10237 rc = mozilla_get_mouse_location( dom_event, &x, &y);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10238 popup = dw_menu_new( 0 );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10239 if ( _gtk_moz_embed_can_go_forward(GTK_MOZ_EMBED(embed) ) )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10240 flags = DW_MIS_ENABLED;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10241 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10242 flags = DW_MIS_DISABLED;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10243 menuitem = dw_menu_append_item( popup, "Forward", 1, flags, TRUE, FALSE, 0 );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10244 dw_signal_connect( menuitem, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_html_forward_callback), embed );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10245
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10246 if ( _gtk_moz_embed_can_go_back(GTK_MOZ_EMBED(embed) ) )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10247 flags = DW_MIS_ENABLED;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10248 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10249 flags = DW_MIS_DISABLED;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10250 menuitem = dw_menu_append_item( popup, "Back", 2, flags, TRUE, FALSE, 0 );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10251 dw_signal_connect( menuitem, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_html_backward_callback), embed );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10252
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10253 dw_menu_append_item( popup, DW_MENU_SEPARATOR, 99, 0, TRUE, FALSE, 0 );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10254
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10255 menuitem = dw_menu_append_item( popup, "Reload", 3, 0, TRUE, FALSE, 0 );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10256 dw_signal_connect( menuitem, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(_dw_html_reload_callback), embed );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10257
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10258 dw_menu_popup( &popup, embed, x, y );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10259 rc = TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10260 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10261 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10262 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10263 rc = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10264 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10265 return rc;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10266 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10267 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10268
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10269 #ifdef USE_LIBGTKHTML2
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10270 static gboolean dom_mouse_down( HtmlDocument *doc, DomMouseEvent *event, gpointer data )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10271 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10272 fprintf(stderr,"mouse down\n");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10273 return TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10274 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10275 static gboolean dom_mouse_up( HtmlDocument *doc, DomMouseEvent *event, gpointer data )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10276 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10277 fprintf(stderr,"mouse up\n");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10278 return TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10279 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10280 static gboolean dom_mouse_click( HtmlDocument *doc, DomMouseEvent *event, gpointer data )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10281 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10282 fprintf(stderr,"mouse click\n");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10283 return TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10284 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10285 static gboolean url_requested (HtmlDocument *doc, const gchar *url, HtmlStream *stream)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10286 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10287 fprintf(stderr,"URL IS REQUESTED: %s\n",url);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10288 return TRUE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10289 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10290 static void link_clicked (HtmlDocument *doc, const gchar *url)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10291 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10292 fprintf(stderr,"link clicked: %s!\n", url);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10293 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10294 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10295
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10296 #ifdef USE_WEBKIT
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10297 # ifdef WEBKIT_CHECK_VERSION
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10298 # if WEBKIT_CHECK_VERSION(1,1,5)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10299 static void _dw_html_print_cb( GtkWidget *widget, gpointer *data )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10300 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10301 WebKitWebView *web_view = DW_WEBKIT_WEB_VIEW(data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10302 WebKitWebFrame *frame;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10303
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10304 frame = _webkit_web_view_get_focused_frame( web_view );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10305 _webkit_web_frame_print( frame );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10306 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10307 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10308 * Fired when the user right-clicks to get the popup-menu on the HTML widget
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10309 * We add a "Print" menu item to enable printing
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10310 * user_data is not used
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10311 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10312 static void _dw_html_populate_popup_cb( WebKitWebView *web_view, GtkMenu *menu, gpointer user_data )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10313 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10314 GtkWidget *image = gtk_image_new_from_stock( GTK_STOCK_PRINT, GTK_ICON_SIZE_MENU );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10315 GtkWidget *item = gtk_image_menu_item_new_with_label( "Print" );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10316
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10317 gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM(item), image );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10318 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10319 g_signal_connect( item, "activate", G_CALLBACK(_dw_html_print_cb), web_view );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10320 gtk_widget_show(item);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10321 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10322 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10323 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10324 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10325
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10326 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10327 * Create a new Entryfield window (widget) to be packed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10328 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10329 * text: The default text to be in the entryfield widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10330 * id: An ID to be used with dw_window_from_id() or 0L.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10331 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10332 HWND dw_html_new(unsigned long id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10333 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10334 GtkWidget *widget,*stext;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10335 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10336
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10337 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10338 #ifdef USE_GTKMOZEMBED
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10339 if (!_gtk_moz_embed_new)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10340 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10341 widget = dw_box_new(DW_HORZ, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10342 stext = dw_text_new( "HTML widget not available; you do not have access to gtkmozembed.", 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10343 dw_box_pack_start(widget, stext, 0, 0, TRUE, TRUE, 10);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10344 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10345 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10346 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10347 widget = _gtk_moz_embed_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10348 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10349 * Connect some signals
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10350 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10351 g_signal_connect( G_OBJECT(widget), "net-stop", G_CALLBACK(_dw_html_net_stop_cb), widget );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10352 g_signal_connect( G_OBJECT(widget), "dom_mouse_click", G_CALLBACK(_dw_dom_mouse_click_cb), widget );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10353 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10354 #elif defined(USE_LIBGTKHTML2)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10355 if ( !_html_document_new )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10356 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10357 widget = dw_box_new(DW_HORZ, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10358 stext = dw_text_new( "HTML widget not available; you do not have access to libgtkhtml-2.", 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10359 dw_box_pack_start(widget, stext, 0, 0, TRUE, TRUE, 10);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10360 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10361 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10362 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10363 HtmlDocument *document;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10364 document = html_document_new ();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10365 g_signal_connect (G_OBJECT (document), "dom_mouse_down", G_CALLBACK (dom_mouse_down), NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10366 g_signal_connect (G_OBJECT (document), "dom_mouse_up", G_CALLBACK (dom_mouse_up), NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10367 g_signal_connect (G_OBJECT (document), "dom_mouse_click", G_CALLBACK (dom_mouse_click), NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10368 g_signal_connect (G_OBJECT (document), "request_url", G_CALLBACK (url_requested), NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10369 g_signal_connect (G_OBJECT (document), "link_clicked", G_CALLBACK (link_clicked), NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10370 widget = _html_view_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10371 g_object_set_data(G_OBJECT(widget), "_dw_html_document", (gpointer)document);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10372 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10373 #elif defined(USE_WEBKIT)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10374 if (!_webkit_web_view_open)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10375 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10376 widget = dw_box_new(DW_HORZ, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10377 stext = dw_text_new( "HTML widget not available; you do not have access to webkit.", 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10378 dw_box_pack_start(widget, stext, 0, 0, TRUE, TRUE, 10);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10379 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10380 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10381 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10382 WebKitWebView *web_view;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10383 widget = gtk_scrolled_window_new (NULL, NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10384 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW (widget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10385 web_view = (WebKitWebView *)_webkit_web_view_new();
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10386 /* web_view = WEBKIT_WEB_VIEW(_webkit_web_view_new() ); */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10387 gtk_container_add( GTK_CONTAINER (widget), GTK_WIDGET(web_view) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10388 gtk_widget_show( GTK_WIDGET(web_view) );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10389 g_object_set_data(G_OBJECT(widget), "_dw_web_view", (gpointer)web_view);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10390 # ifdef WEBKIT_CHECK_VERSION
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10391 # if WEBKIT_CHECK_VERSION(1,1,5)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10392 g_signal_connect( web_view, "populate-popup", G_CALLBACK(_dw_html_populate_popup_cb), NULL );
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10393 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10394 # endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10395 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10396 #else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10397 widget = dw_box_new(DW_HORZ, 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10398 stext = dw_text_new( "HTML widget not available; you do not have access to gtkmozembed.", 0);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10399 dw_box_pack_start(widget, stext, 0, 0, TRUE, TRUE, 10);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10400 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10401 gtk_widget_show(widget);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10402 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10403 return widget;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10404 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10405
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10406 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10407 * Gets the contents of the default clipboard as text.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10408 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10409 * None.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10410 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10411 * Pointer to an allocated string of text or NULL if clipboard empty or contents could not
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10412 * be converted to text.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10413 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10414 char *dw_clipboard_get_text()
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10415 {
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10416 int _locked_by_me = FALSE;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10417 GtkClipboard *clipboard_object;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10418 char *ret = NULL;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10419
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10420 DW_MUTEX_LOCK;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10421 if((clipboard_object = gtk_clipboard_get( GDK_SELECTION_CLIPBOARD )))
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10422 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10423 gchar *clipboard_contents;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10424
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10425 if((clipboard_contents = gtk_clipboard_wait_for_text( clipboard_object )))
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10426 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10427 ret = strdup((char *)clipboard_contents);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10428 g_free(clipboard_contents);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10429 }
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10430 }
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10431 DW_MUTEX_UNLOCK;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10432 return ret;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10433 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10434
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10435 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10436 * Sets the contents of the default clipboard to the supplied text.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10437 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10438 * Text.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10439 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10440 void dw_clipboard_set_text( char *str, int len )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10441 {
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10442 int _locked_by_me = FALSE;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10443 GtkClipboard *clipboard_object;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10444
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10445 DW_MUTEX_LOCK;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10446 if((clipboard_object = gtk_clipboard_get( GDK_SELECTION_CLIPBOARD )))
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10447 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10448 gtk_clipboard_set_text( clipboard_object, str, len );
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10449 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10450 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10451 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10452
1136
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10453 /* Internal function to create the drawable pixmap and call the function */
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10454 static void _dw_draw_page(GtkPrintOperation *operation, GtkPrintContext *context, int page_nr)
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10455 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10456 cairo_t *cr = gtk_print_context_get_cairo_context(context);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10457 void *drawdata = g_object_get_data(G_OBJECT(operation), "_dw_drawdata");
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10458 int (*drawfunc)(HPRINT, HPIXMAP, int, void *) = g_object_get_data(G_OBJECT(operation), "_dw_drawfunc");
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10459 int result = 0;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10460 HPIXMAP pixmap;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10461
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10462 if(cr && drawfunc && (pixmap = calloc(1,sizeof(struct _hpixmap))))
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10463 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10464 pixmap->image = cairo_get_group_target(cr);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10465 pixmap->handle = (HWND)operation;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10466 pixmap->width = gtk_print_context_get_width(context);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10467 pixmap->height = gtk_print_context_get_height(context);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10468 result = drawfunc((HPRINT)operation, pixmap, page_nr, drawdata);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10469 if(result)
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10470 gtk_print_operation_draw_page_finish(operation);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10471 free(pixmap);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10472 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10473 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10474
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10475 /*
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10476 * Creates a new print object.
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10477 * Parameters:
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1149
diff changeset
10478 * jobname: Name of the print job to show in the queue.
1136
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10479 * flags: Flags to initially configure the print object.
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10480 * pages: Number of pages to print.
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10481 * drawfunc: The pointer to the function to be used as the callback.
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10482 * drawdata: User data to be passed to the handler function.
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10483 * Returns:
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1136
diff changeset
10484 * A handle to the print object or NULL on failure.
1136
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10485 */
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1149
diff changeset
10486 HPRINT API dw_print_new(char *jobname, unsigned long flags, unsigned int pages, void *drawfunc, void *drawdata)
1136
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10487 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10488 GtkPrintOperation *op;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10489 int _locked_by_me = FALSE;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10490
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10491 if(!drawfunc)
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10492 return NULL;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10493
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10494 DW_MUTEX_LOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10495 if((op = gtk_print_operation_new()))
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10496 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10497 gtk_print_operation_set_n_pages(op, pages);
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1149
diff changeset
10498 gtk_print_operation_set_job_name(op, jobname ? jobname : "Dynamic Windows Print Job");
1136
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10499 g_object_set_data(G_OBJECT(op), "_dw_drawfunc", drawfunc);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10500 g_object_set_data(G_OBJECT(op), "_dw_drawdata", drawdata);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10501 g_signal_connect(op, "draw_page", G_CALLBACK(_dw_draw_page), NULL);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10502 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10503 DW_MUTEX_UNLOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10504 return (HPRINT)op;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10505 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10506
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10507 /*
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10508 * Runs the print job, causing the draw page callbacks to fire.
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10509 * Parameters:
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10510 * print: Handle to the print object returned by dw_print_new().
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10511 * flags: Flags to run the print job.
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10512 * Returns:
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10513 * DW_ERROR_UNKNOWN on error or DW_ERROR_NONE on success.
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10514 */
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10515 int API dw_print_run(HPRINT print, unsigned long flags)
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10516 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10517 GtkPrintOperationResult res;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10518 GtkPrintOperation *op = (GtkPrintOperation *)print;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10519 int _locked_by_me = FALSE;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10520
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10521 DW_MUTEX_LOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10522 res = gtk_print_operation_run(op, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, NULL, NULL);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10523 DW_MUTEX_UNLOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10524 return (res == GTK_PRINT_OPERATION_RESULT_ERROR ? DW_ERROR_UNKNOWN : DW_ERROR_NONE);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10525 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10526
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10527 /*
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10528 * Cancels the print job, typically called from a draw page callback.
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10529 * Parameters:
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10530 * print: Handle to the print object returned by dw_print_new().
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10531 */
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10532 void API dw_print_cancel(HPRINT print)
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10533 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10534 int _locked_by_me = FALSE;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10535 GtkPrintOperation *op = (GtkPrintOperation *)print;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10536
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10537 DW_MUTEX_LOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10538 gtk_print_operation_cancel(op);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10539 DW_MUTEX_UNLOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10540 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10541
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10542 /*
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10543 * Returns a pointer to a static buffer which contains the
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10544 * current user directory. Or the root directory (C:\ on
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10545 * OS/2 and Windows).
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10546 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10547 char *dw_user_dir(void)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10548 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10549 static char _user_dir[1024] = "";
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10550
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10551 if(!_user_dir[0])
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10552 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10553 char *home = getenv("HOME");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10554
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10555 if(home)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10556 strcpy(_user_dir, home);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10557 else
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10558 strcpy(_user_dir, "/");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10559 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10560 return _user_dir;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10561 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10562
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10563 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10564 * Call a function from the window (widget)'s context.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10565 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10566 * handle: Window handle of the widget.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10567 * function: Function pointer to be called.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10568 * data: Pointer to the data to be passed to the function.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10569 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10570 void dw_window_function(HWND handle, void *function, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10571 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10572 void (* windowfunc)(void *);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10573
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10574 windowfunc = function;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10575
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10576 if(windowfunc)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10577 windowfunc(data);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10578 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10579
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10580 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10581 * Add a named user data item to a window handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10582 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10583 * window: Window handle of signal to be called back.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10584 * dataname: A string pointer identifying which signal to be hooked.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10585 * data: User data to be passed to the handler function.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10586 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10587 void dw_window_set_data(HWND window, char *dataname, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10588 {
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10589 HWND thiswindow = window;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10590 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10591
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10592 if(!window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10593 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10594
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10595 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10596 if(GTK_IS_SCROLLED_WINDOW(window))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10597 {
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10598 thiswindow = (HWND)g_object_get_data(G_OBJECT(window), "_dw_user");
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10599 }
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10600 if(thiswindow && G_IS_OBJECT(thiswindow))
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10601 g_object_set_data(G_OBJECT(thiswindow), dataname, (gpointer)data);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10602 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10603 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10604
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10605 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10606 * Gets a named user data item to a window handle.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10607 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10608 * window: Window handle of signal to be called back.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10609 * dataname: A string pointer identifying which signal to be hooked.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10610 * data: User data to be passed to the handler function.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10611 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10612 void *dw_window_get_data(HWND window, char *dataname)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10613 {
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10614 HWND thiswindow = window;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10615 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10616 void *ret = NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10617
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10618 if(!window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10619 return NULL;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10620
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10621 DW_MUTEX_LOCK;
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10622 if(GTK_IS_SCROLLED_WINDOW(window))
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10623 {
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10624 thiswindow = (HWND)g_object_get_data(G_OBJECT(window), "_dw_user");
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10625 }
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10626 if(G_IS_OBJECT(thiswindow))
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
10627 ret = (void *)g_object_get_data(G_OBJECT(thiswindow), dataname);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10628 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10629 return ret;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10630 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10631
874
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10632 /* Internal function to get the state of the timer before firing */
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10633 gboolean _dw_timer_func(gpointer data)
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10634 {
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10635 void (*sigfunc)(void *data) = NULL;
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10636 void *sdata;
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10637 char tmpbuf[30];
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10638 int *tag = data;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10639
874
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10640 if(tag)
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10641 {
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10642 snprintf(tmpbuf, 30, "_dw_timer%d", *tag);
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10643 sigfunc = g_object_get_data(G_OBJECT(_DWObject), tmpbuf);
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10644 snprintf(tmpbuf, 30, "_dw_timerdata%d", *tag);
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10645 sdata = g_object_get_data(G_OBJECT(_DWObject), tmpbuf);
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10646 }
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10647 if(!sigfunc)
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10648 {
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10649 if(tag)
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10650 free(tag);
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10651 return FALSE;
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10652 }
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10653 sigfunc(sdata);
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10654 return TRUE;
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10655 }
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10656
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10657 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10658 * Add a callback to a timer event.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10659 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10660 * interval: Milliseconds to delay between calls.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10661 * sigfunc: The pointer to the function to be used as the callback.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10662 * data: User data to be passed to the handler function.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10663 * Returns:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10664 * Timer ID for use with dw_timer_disconnect(), 0 on error.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10665 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10666 int API dw_timer_connect(int interval, void *sigfunc, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10667 {
874
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10668 int *tag, _locked_by_me = FALSE;
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10669 char tmpbuf[30];
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10670
874
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10671 tag = calloc(1, sizeof(int));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10672
874
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10673 DW_MUTEX_LOCK;
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10674 *tag = g_timeout_add(interval, (GSourceFunc)_dw_timer_func, (gpointer)tag);
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10675 snprintf(tmpbuf, 30, "_dw_timer%d", *tag);
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10676 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, sigfunc);
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10677 snprintf(tmpbuf, 30, "_dw_timerdata%d", *tag);
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10678 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, data);
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10679 DW_MUTEX_UNLOCK;
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10680 return *tag;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10681 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10682
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10683 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10684 * Removes timer callback.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10685 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10686 * id: Timer ID returned by dw_timer_connect().
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10687 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10688 void API dw_timer_disconnect(int id)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10689 {
874
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10690 int _locked_by_me = FALSE;
876
13442724eb5d One last change... use 30 bytes instead of 20... don't want to overflow.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 875
diff changeset
10691 char tmpbuf[30];
13442724eb5d One last change... use 30 bytes instead of 20... don't want to overflow.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 875
diff changeset
10692
13442724eb5d One last change... use 30 bytes instead of 20... don't want to overflow.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 875
diff changeset
10693 snprintf(tmpbuf, 30, "_dw_timer%d", id);
874
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10694 DW_MUTEX_LOCK;
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10695 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, NULL);
876
13442724eb5d One last change... use 30 bytes instead of 20... don't want to overflow.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 875
diff changeset
10696 snprintf(tmpbuf, 30, "_dw_timerdata%d", id);
875
e1afa43261d9 After thinking about it... probably need to get rid of the saved data to so we don't leak.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 874
diff changeset
10697 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, NULL);
874
18eab415ff0c Rewrote the timers for GTK3. Due to the removal of the timer remove by ID function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 861
diff changeset
10698 DW_MUTEX_UNLOCK;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10699 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10700
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10701 /* Get the actual signal window handle not the user window handle
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10702 * Should mimic the code in dw_signal_connect() below.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10703 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10704 static HWND _find_signal_window(HWND window, char *signame)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10705 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10706 HWND thiswindow = window;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10707
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10708 if(GTK_IS_SCROLLED_WINDOW(thiswindow))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10709 thiswindow = (HWND)g_object_get_data(G_OBJECT(window), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10710 else if(GTK_IS_VSCALE(thiswindow) || GTK_IS_HSCALE(thiswindow) ||
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10711 GTK_IS_VSCROLLBAR(thiswindow) || GTK_IS_HSCROLLBAR(thiswindow) ||
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10712 GTK_IS_SPIN_BUTTON(thiswindow))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10713 thiswindow = (GtkWidget *)g_object_get_data(G_OBJECT(thiswindow), "_dw_adjustment");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10714 else if(GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_SELECT) == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10715 thiswindow = (GtkWidget *)gtk_tree_view_get_selection(GTK_TREE_VIEW(thiswindow));
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10716 return thiswindow;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10717 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10718
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10719 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10720 * Add a callback to a window event.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10721 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10722 * window: Window handle of signal to be called back.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10723 * signame: A string pointer identifying which signal to be hooked.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10724 * sigfunc: The pointer to the function to be used as the callback.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10725 * data: User data to be passed to the handler function.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10726 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10727 void dw_signal_connect(HWND window, char *signame, void *sigfunc, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10728 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10729 void *thisfunc = _findsigfunc(signame);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10730 char *thisname = signame;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10731 HWND thiswindow = window;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10732 int sigid, _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10733 gint cid;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10734
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10735 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10736 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10737 * If the window we are setting the signal on is a scrolled window we need to get
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10738 * the "real" widget type. thiswindow is the "real" widget type
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10739 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10740 if (GTK_IS_SCROLLED_WINDOW(thiswindow))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10741 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10742 thiswindow = (HWND)g_object_get_data(G_OBJECT(window), "_dw_user");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10743 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10744
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10745 if (strcmp(signame, DW_SIGNAL_EXPOSE) == 0)
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10746 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10747 thisname = "draw";
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10748 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10749 else if (GTK_IS_MENU_ITEM(thiswindow) && strcmp(signame, DW_SIGNAL_CLICKED) == 0)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10750 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10751 thisname = "activate";
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10752 thisfunc = _findsigfunc(thisname);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10753 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10754 else if (GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_CONTEXT) == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10755 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10756 sigid = _set_signal_handler(thiswindow, window, sigfunc, data, thisfunc);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
10757 cid = g_signal_connect(G_OBJECT(thiswindow), "button_press_event", G_CALLBACK(thisfunc), GINT_TO_POINTER(sigid));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10758 _set_signal_handler_id(thiswindow, sigid, cid);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10759
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10760 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10761 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10762 }
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
10763 else if ((GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_SELECT) == 0) ||
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
10764 (GTK_IS_COMBO_BOX(thiswindow) && strcmp(signame, DW_SIGNAL_LIST_SELECT) == 0))
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10765 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10766 GtkWidget *widget = thiswindow;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10767
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10768 thisname = "changed";
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10769
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10770 sigid = _set_signal_handler(widget, window, sigfunc, data, thisfunc);
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10771 if(GTK_IS_TREE_VIEW(thiswindow))
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10772 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10773 thiswindow = (GtkWidget *)gtk_tree_view_get_selection(GTK_TREE_VIEW(thiswindow));
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
10774 cid = g_signal_connect(G_OBJECT(thiswindow), thisname, G_CALLBACK(thisfunc), GINT_TO_POINTER(sigid));
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
10775 }
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
10776 else
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
10777 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
10778 cid = g_signal_connect(G_OBJECT(thiswindow), thisname, G_CALLBACK(_combobox_select_event), GINT_TO_POINTER(sigid));
785
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
10779 }
a86c54519de0 Implemented list select event for both combobox and listbox (implemented via the tree view).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 784
diff changeset
10780 _set_signal_handler_id(widget, sigid, cid);
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10781
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10782 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10783 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10784 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10785 else if (GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_TREE_EXPAND) == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10786 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10787 thisname = "row-expanded";
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10788 }
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
10789 else if (GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_ENTER) == 0)
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10790 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10791 sigid = _set_signal_handler(thiswindow, window, sigfunc, data, _container_enter_event);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
10792 cid = g_signal_connect(G_OBJECT(thiswindow), "key_press_event", G_CALLBACK(_container_enter_event), GINT_TO_POINTER(sigid));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10793 _set_signal_handler_id(thiswindow, sigid, cid);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10794
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10795 thisname = "button_press_event";
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10796 thisfunc = _findsigfunc(DW_SIGNAL_ITEM_ENTER);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10797 }
786
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
10798 else if (GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_COLUMN_CLICK) == 0)
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
10799 {
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
10800 /* We don't actually need a signal handler here... just need to assign the handler ID
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
10801 * Since the handlers for the columns were already created in _dw_container_setup()
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
10802 */
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
10803 sigid = _set_signal_handler(thiswindow, window, sigfunc, data, _column_click_event);
788
f8f4f72d6462 Implemented dw_listbox_selected_multi() however need to do some testing to make sure this works in all cases.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 787
diff changeset
10804 g_object_set_data(G_OBJECT(thiswindow), "_dw_column_click_id", GINT_TO_POINTER(sigid+1));
786
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
10805 DW_MUTEX_UNLOCK;
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
10806 return;
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
10807 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10808 else if (strcmp(signame, DW_SIGNAL_SET_FOCUS) == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10809 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10810 thisname = "focus-in-event";
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10811 if (GTK_IS_COMBO_BOX(thiswindow))
789
8fe51d916b36 Reenabled the set-focus code that was disabled due to combobox issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 788
diff changeset
10812 thiswindow = gtk_bin_get_child(GTK_BIN(thiswindow));
8fe51d916b36 Reenabled the set-focus code that was disabled due to combobox issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 788
diff changeset
10813 }
8fe51d916b36 Reenabled the set-focus code that was disabled due to combobox issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 788
diff changeset
10814 #if 0
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10815 else if (strcmp(signame, DW_SIGNAL_LOSE_FOCUS) == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10816 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10817 thisname = "focus-out-event";
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10818 if(GTK_IS_COMBO_BOX(thiswindow))
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10819 thiswindow = GTK_COMBO_BOX(thiswindow)->entry;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10820 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10821 #endif
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10822 else if (GTK_IS_VSCALE(thiswindow) || GTK_IS_HSCALE(thiswindow) ||
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10823 GTK_IS_VSCROLLBAR(thiswindow) || GTK_IS_HSCROLLBAR(thiswindow) ||
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10824 GTK_IS_SPIN_BUTTON(thiswindow) )
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10825 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10826 thiswindow = (GtkWidget *)g_object_get_data(G_OBJECT(thiswindow), "_dw_adjustment");
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10827 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10828 else if (GTK_IS_NOTEBOOK(thiswindow) && strcmp(signame, DW_SIGNAL_SWITCH_PAGE) == 0)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10829 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10830 thisname = "switch-page";
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10831 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10832
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10833 if (!thisfunc || !thiswindow)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10834 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10835 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10836 return;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10837 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10838
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10839 sigid = _set_signal_handler(thiswindow, window, sigfunc, data, thisfunc);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
10840 cid = g_signal_connect(G_OBJECT(thiswindow), thisname, G_CALLBACK(thisfunc),GINT_TO_POINTER(sigid));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10841 _set_signal_handler_id(thiswindow, sigid, cid);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10842 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10843 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10844
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10845 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10846 * Removes callbacks for a given window with given name.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10847 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10848 * window: Window handle of callback to be removed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10849 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10850 void dw_signal_disconnect_by_name(HWND window, char *signame)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10851 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10852 HWND thiswindow;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10853 int z, count;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10854 void *thisfunc;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10855 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10856
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10857 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10858 thiswindow = _find_signal_window(window, signame);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
10859 count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(thiswindow), "_dw_sigcounter"));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10860 thisfunc = _findsigfunc(signame);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10861
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10862 for(z=0;z<count;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10863 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
10864 SignalHandler sh = _get_signal_handler(thiswindow, GINT_TO_POINTER(z));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10865
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10866 if(sh.intfunc == thisfunc)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10867 _remove_signal_handler(thiswindow, z);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10868 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10869 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10870 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10871
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10872 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10873 * Removes all callbacks for a given window.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10874 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10875 * window: Window handle of callback to be removed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10876 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10877 void dw_signal_disconnect_by_window(HWND window)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10878 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10879 HWND thiswindow;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10880 int z, count;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10881 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10882
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10883 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10884 thiswindow = _find_signal_window(window, NULL);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
10885 count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(thiswindow), "_dw_sigcounter"));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10886
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10887 for(z=0;z<count;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10888 _remove_signal_handler(thiswindow, z);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10889 g_object_set_data(G_OBJECT(thiswindow), "_dw_sigcounter", NULL);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10890 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10891 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10892
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10893 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10894 * Removes all callbacks for a given window with specified data.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10895 * Parameters:
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10896 * window: Window handle of callback to be removed.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10897 * data: Pointer to the data to be compared against.
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10898 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10899 void dw_signal_disconnect_by_data(HWND window, void *data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10900 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10901 HWND thiswindow;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10902 int z, count;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10903 int _locked_by_me = FALSE;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10904
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10905 DW_MUTEX_LOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10906 thiswindow = _find_signal_window(window, NULL);
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
10907 count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(thiswindow), "_dw_sigcounter"));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10908
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10909 for(z=0;z<count;z++)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10910 {
1092
0fc7387abfd1 Similar GTK3 changes to what I just committed for GTK2, to avoid casting warnings on 64bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1087
diff changeset
10911 SignalHandler sh = _get_signal_handler(thiswindow, GINT_TO_POINTER(z));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10912
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10913 if(sh.data == data)
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10914 _remove_signal_handler(thiswindow, z);
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10915 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10916 DW_MUTEX_UNLOCK;
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10917 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10918