annotate gtk3/dw.c @ 1832:cd4ff1eb34a3

Accidentally removed a very important line from GTK 3.x.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 31 Oct 2012 11:00:46 +0000
parents ce7543633fef
children ff80ad40a5d6
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:
1386
fd1de4e9e542 Updated the readme and comments in the source files
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1384
diff changeset
3 * A GTK like cross-platform GUI
775
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 *
1556
4a9c574d5c17 Fixed on Windows showing themed static text on colored boxes when the window is glass.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1555
diff changeset
6 * (C) 2000-2012 Brian Smith <brian@dbsoft.org>
1386
fd1de4e9e542 Updated the readme and comments in the source files
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1384
diff changeset
7 * (C) 2003-2011 Mark Hessling <mark@rexx.org>
775
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_WEBKIT
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
35 #include <webkit/webkit.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
36 #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
37
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 #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
39
1576
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
40 #if !GTK_CHECK_VERSION(3,1,0)
1577
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
41 #error GTK 3.0 is no longer supported, please use 3.2 or later.
1576
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
42 #endif
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
43
775
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 #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
45 # 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
46 # 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
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 # 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
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 "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
53 #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
54 #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
55 #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
56
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 /* 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
58 #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
59 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
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
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
62 /* ff = 255 = 1.0000
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
63 * ee = 238 = 0.9333
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
64 * cc = 204 = 0.8000
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
65 * bb = 187 = 0.7333
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
66 * aa = 170 = 0.6667
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
67 * 77 = 119 = 0.4667
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
68 * 00 = 0 = 0.0000
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
69 */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
70 GdkRGBA _colors[] =
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
71 {
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
72 { 0.0000, 0.0000, 0.0000, 1.0 }, /* 0 black */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
73 { 0.7333, 0.0000, 0.0000, 1.0 }, /* 1 red */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
74 { 0.0000, 0.7333, 0.0000, 1.0 }, /* 2 green */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
75 { 0.6667, 0.6667, 0.0000, 1.0 }, /* 3 yellow */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
76 { 0.0000, 0.0000, 0.8000, 1.0 }, /* 4 blue */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
77 { 0.7333, 0.0000, 0.7333, 1.0 }, /* 5 magenta */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
78 { 0.0000, 0.7333, 0.7333, 1.0 }, /* 6 cyan */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
79 { 0.7333, 0.7333, 0.7333, 1.0 }, /* 7 white */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
80 { 0.4667, 0.4667, 0.4667, 1.0 }, /* 8 grey */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
81 { 1.0000, 0.0000, 0.0000, 1.0 }, /* 9 bright red */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
82 { 0.0000, 1.0000, 0.0000, 1.0 }, /* 10 bright green */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
83 { 0.9333, 0.9333, 0.0000, 1.0 }, /* 11 bright yellow */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
84 { 0.0000, 0.0000, 1.0000, 1.0 }, /* 12 bright blue */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
85 { 1.0000, 0.0000, 1.0000, 1.0 }, /* 13 bright magenta */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
86 { 0.0000, 0.9333, 0.9333, 1.0 }, /* 14 bright cyan */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
87 { 1.0000, 1.0000, 1.0000, 1.0 }, /* 15 bright white */
775
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 };
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
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 /*
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 * 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
92 */
1258
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
93 #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
94 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
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 ".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
97 ".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
98 ".ico",
1258
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
99 ".icns",
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
100 ".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
101 ".jpg",
1258
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
102 ".jpeg",
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
103 ".tiff",
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
104 ".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
105 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
106
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
107 #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
108 # 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
109 #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
110
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
111 #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
112 # 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
113 #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
114
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
115 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
116 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
117 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
118
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 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
120
1597
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
121 static int _dw_ignore_click = 0, _dw_ignore_expand = 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
122 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
123
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
124 #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
125 #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
126
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 #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
128 #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
129 #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
130
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
131 #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
132 #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
133 #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
134 #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
135
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
136 /* 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
137 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
138 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
139 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
140 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
141 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
142 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
143 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
144 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
145 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
146 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
147 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
148 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
149 static gint _tree_context_event(GtkWidget *widget, GdkEventButton *event, gpointer data);
1578
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
150 static gint _value_changed_event(GtkWidget *widget, gpointer user_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
151 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
152 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
153 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
154 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
155
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
156 #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
157 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
158 * 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
159 * 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
160 */
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 # 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
162 # 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
163 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
164 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
165 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
166 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
167 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
168 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
169 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
170 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
171 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
172 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
173 #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
174
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
175 GObject *_DWObject = NULL;
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
176 char *_DWDefaultFont = NULL;
1384
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
177 static char _dw_share_path[PATH_MAX+1] = { 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
178
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 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
180 {
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 *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
182 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
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 } 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
185
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 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
187 {
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 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
189 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
190 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
191 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
192 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
193
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 } 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
195
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
196 #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
197
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 /* 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
199 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
200 { _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
201 { _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
202 { _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
203 { _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
204 { _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
205 { _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
206 { _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
207 { _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
208 { _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
209 { _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
210 { _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
211 { _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
212 { _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
213 { _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
214 { _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
215 { _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
216 { _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
217 { _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
218 };
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 /* 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
221 #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
222 #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
223 #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
224 #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
225 #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
226
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 /* 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
228 #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
229 #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
230 #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
231
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
232 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
233 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
234 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
235 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
236
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 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
238 {
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 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
240 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
241 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
242 };
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
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 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
245 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
246 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
247 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
248
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 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
250 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
251 };
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
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 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
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 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
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
257 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
258 };
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
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 #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
261 #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
262 #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
263
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_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
265 #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
266 #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
267 #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
268 #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
269 #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
270 #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
271
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 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
273
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 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
275 {
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 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
277
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 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
279 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
280
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 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
282 gint y;
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
283 gint 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
284 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
285
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 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
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 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
290 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
291
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 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
293 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
294 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
295 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
296 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
297
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 /* 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
299 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
300 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
301 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
302 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
303 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
304
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 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
306 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
307 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
308
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 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
310
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 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
312 {
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 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
314
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 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
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
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 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
319 {
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 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
321 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
322 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
323 (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
324 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
325 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
326 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
327 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
328 (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
329 };
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
330
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
331 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
332 }
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 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
334 }
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
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 /* 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
337 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
338
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 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
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 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
342 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
343
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 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
345 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
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 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
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 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
350 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
351 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
352 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
353 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
354
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 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
356 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
357 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
358 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
359 }
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 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
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 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
364 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
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
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 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
368 {
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 GtkWidget *mdi;
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
370 GdkRGBA 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
371
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 mdi = GTK_WIDGET (g_object_new (gtk_mdi_get_type (), NULL));
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
373 gdk_rgba_parse (&background, GTK_MDI_BACKGROUND);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
374 gtk_widget_override_background_color (mdi, GTK_STATE_NORMAL, &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
375
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 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
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 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
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 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
382
1577
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
383 GtkWidget *grid;
775
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 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
385
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 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
387 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
388 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
389 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
390 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
391
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
392 GdkRGBA 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
393 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
394 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
395 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
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 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
398 child_widget_box = gtk_event_box_new ();
1577
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
399 gtk_widget_set_margin_left(child_widget_box, 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
400 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
401 bottom_event_box = gtk_event_box_new ();
1577
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
402 grid = gtk_grid_new ();
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
403 gtk_grid_set_row_spacing(GTK_GRID(grid), 1);
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
404 gtk_grid_set_column_spacing(GTK_GRID(grid), 1);
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
405
775
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 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
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 button[i] = gtk_event_box_new ();
1577
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
409 gtk_widget_set_events (button[i], GDK_BUTTON_PRESS_MASK);
775
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
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
412 gdk_rgba_parse (&color, GTK_MDI_LABEL_BACKGROUND);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
413
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
414 gtk_widget_override_background_color (top_event_box, GTK_STATE_NORMAL, &color);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
415 gtk_widget_override_background_color (bottom_event_box, GTK_STATE_NORMAL, &color);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
416 gtk_widget_override_background_color (child_box, GTK_STATE_NORMAL, &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
417 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
418 {
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 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
420 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
421 gtk_widget_override_background_color (button[j], i, &color);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
422 }
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
423 }
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
424 gdk_rgba_parse (&color, GTK_MDI_LABEL_FOREGROUND);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
425 gtk_widget_override_color (label, GTK_STATE_NORMAL, &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
426 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
427
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 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
429 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
430 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
431
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
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 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
434 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
435 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
436 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
437 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
438 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
439 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
440 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
441 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
442 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
443 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
444 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
445
1577
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
446
1579
245e6bf51317 Fix GTK3 MDI titlebar buttons expanding... or really the label not expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1578
diff changeset
447 /* Titlebar and buttons */
245e6bf51317 Fix GTK3 MDI titlebar buttons expanding... or really the label not expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1578
diff changeset
448 gtk_widget_set_hexpand(top_event_box, TRUE);
1577
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
449 gtk_grid_attach (GTK_GRID (grid), top_event_box, 0, 0, 1, 1);
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
450 gtk_grid_attach (GTK_GRID (grid), button[0], 1, 0, 1, 1);
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
451 gtk_grid_attach (GTK_GRID (grid), button[1], 2, 0, 1, 1);
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
452 gtk_grid_attach (GTK_GRID (grid), button[2], 3, 0, 1, 1);
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
453
1579
245e6bf51317 Fix GTK3 MDI titlebar buttons expanding... or really the label not expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1578
diff changeset
454 /* Window contents */
245e6bf51317 Fix GTK3 MDI titlebar buttons expanding... or really the label not expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1578
diff changeset
455 gtk_widget_set_hexpand(child_widget_box, TRUE);
245e6bf51317 Fix GTK3 MDI titlebar buttons expanding... or really the label not expanding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1578
diff changeset
456 gtk_widget_set_vexpand(child_widget_box, TRUE);
1577
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
457 gtk_grid_attach (GTK_GRID (grid), child_widget_box, 0, 1, 4, 1);
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
458
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
459 /* Bottom border */
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
460 gtk_grid_attach (GTK_GRID (grid), bottom_event_box, 4, 2, 1, 1);
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
461
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
462 gtk_container_add (GTK_CONTAINER (child_box), grid);
775
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
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 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
465 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
466 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
467 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
468 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
469 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
470 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
471 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
472 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
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 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
475 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
476
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_widget_show (child_box);
1577
fdafbc654e9d Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1576
diff changeset
478 gtk_widget_show (grid);
775
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_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
480 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
481 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
482 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
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 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
485 }
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
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 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
488 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
489 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
490 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
491 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
492 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
493
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 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
495 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
496 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
497 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
498 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
499 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
500 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
501 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
502 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
503 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
504 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
505 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
506 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
507 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
508 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
509 }
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
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 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
512 {
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 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
514
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 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
516 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
517
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 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
519 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
520
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 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
522 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
523 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
524 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
525 }
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
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 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
528 {
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 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
530
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 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
532 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
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 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
535 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
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 *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
538 *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
539 }
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
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 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
542 {
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 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
544
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 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
546 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
547
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 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
549 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
550
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 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
552 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
553 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
554 }
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
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 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
557 {
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 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
559
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_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
561 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
562 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
563 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
564 }
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
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 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
567 {
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 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
569 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
570 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
571 GdkWindow *thiswindow;
1555
5b5da6d21f08 Removed even more deprecated APIs from GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1554
diff changeset
572 GtkStyleContext *context;
775
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
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 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
575
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 (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
577 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
578
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 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
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 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
582 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
583 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
584 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
585 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
586 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
587 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
588 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
589 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
590 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
591 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
592 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
593 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
594
775
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 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
596 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
597 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
598
775
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 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
600
1555
5b5da6d21f08 Removed even more deprecated APIs from GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1554
diff changeset
601 if((context = gtk_widget_get_style_context(widget)))
5b5da6d21f08 Removed even more deprecated APIs from GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1554
diff changeset
602 gtk_style_context_set_background (context, gtk_widget_get_window(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
603 }
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
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
605 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
606 {
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 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
608 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
609 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
610 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
611
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 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
613 *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
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 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
616 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
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 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
619 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
620
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 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
622 {
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
623 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
624 }
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
625 }
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
626 }
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
627
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
628 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
629 {
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
630 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
631 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
632 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
633 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
634
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
635 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
636 *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
637
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
638 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
639 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
640 {
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
641 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
642 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
643
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
644 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
645 {
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
646 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
647 }
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
648 }
28f9810dfebc More work on getting MDI working again.... still doesn't work right unfortunately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 835
diff changeset
649 }
775
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
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 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
652 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
653 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
654 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
655 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
656 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
657 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
658
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 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
660
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 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
662
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 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
664 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
665 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
666 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
667 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
668 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
669
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
670
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 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
672 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
673 {
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 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
675 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
676
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 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
678 {
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
679 gtk_widget_get_preferred_size (child->widget, NULL, &child_requisition);
775
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 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
681 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
682 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
683 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
684 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
685 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
686 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
687 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
688 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
689 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
690 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
691 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
692 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
693 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
694 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
695 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
696 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
697 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
698 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
699 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
700 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
701 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
702 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
703 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
704 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
705 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
706 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
707 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
708 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
709 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
710 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
711 }
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 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
713 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
714 {
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 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
716 {
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 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
718 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
719 }
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 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
721 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
722 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
723 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
724 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
725 }
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 }
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 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
728 }
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
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
732 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
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 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
735 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
736 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
737
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 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
739 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
740 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
741
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 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
743 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
744 {
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 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
746 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
747 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
748 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
749 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
750 return FALSE;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
751 }
775
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 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
754 {
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 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
756 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
757 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
758 }
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
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 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
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 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
763 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
764 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
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 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
767
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 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
769 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
770 {
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 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
772 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
773 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
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 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
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
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 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
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 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
781 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
782 }
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 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
784 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
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 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
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 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
790 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
791 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
792
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 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
794
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 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
796
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 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
798 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
799 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
800 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
801 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
802
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 (*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
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 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
806
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 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
808 {
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 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
810 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
811
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 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
813 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
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 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
816 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
817
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 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
820 {
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 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
822 {
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 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
824 }
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 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
826 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
827 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
828 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
829 {
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
830 if (gdk_device_grab (gdk_event_get_device(event),
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
831 event->button.window,
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
832 GDK_OWNERSHIP_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
833 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
834 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
835 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
836 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
837 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
838 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
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 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
841
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 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
843 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
844 }
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 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
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 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
848 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
849 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
850
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 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
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 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
854
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
855 gdk_device_ungrab (gdk_event_get_device(event), event->button.time);
775
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 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
857
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 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
859 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
860
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 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
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 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
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 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
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 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
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 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
870 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
871
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
872 gdk_window_get_device_position (gtk_widget_get_window(widget), gdk_event_get_device(event), &x, &y, 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
873
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 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
876 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
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 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
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 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
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 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
884 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
885 }
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
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 }
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 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
891 {
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 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
893 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
894
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 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
896 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
897
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 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
899 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
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 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
902 {
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 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
904 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
905 {
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
906 if (gdk_device_grab (gdk_event_get_device(event),
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
907 event->button.window,
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
908 GDK_OWNERSHIP_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
909 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
910 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
911 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
912 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
913 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
914 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
915
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 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
917 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
918 {
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 GtkAllocation allocation;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
920
775
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 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
922 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
923 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
924 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
925 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
926 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
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
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 }
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 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
931
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 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
933 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
934 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
935
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 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
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 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
939 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
940
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
941 gdk_device_ungrab (gdk_event_get_device(event), event->button.time);
775
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 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
943
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 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
945 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
946 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
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 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
949 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
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 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
952 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
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 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
955
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 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
957 {
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 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
959 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
960 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
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 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
963 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
964
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
965 gdk_window_get_device_position (gtk_widget_get_window(widget), gdk_event_get_device(event), &x, &y, 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
966
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 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
968 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
969 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
970
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 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
972 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
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 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
975 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
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 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
978
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 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
980 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
981 }
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
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 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
984 }
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 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
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 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
989 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
990 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
991 {
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 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
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 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
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 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
997 }
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 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
999 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
1000 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
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
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 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
1004 {
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 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
1006 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
1007 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
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 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
1010 }
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 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
1012 {
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 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
1014 }
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 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
1016 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
1017 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
1018 }
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 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
1021 {
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 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
1023 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
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 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
1026 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
1027
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 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
1029
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 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
1031 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
1032 }
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
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 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
1035 {
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 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
1037
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 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
1039 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
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 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
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 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
1044 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
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 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
1047 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
1048 }
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 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
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
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 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
1054 {
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 #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
1056 /* 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
1057 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
1058
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 req.tv_sec = 0;
1463
77f530f95826 Fixed error in _dw_msleep on Solaris... fix was already in dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1452
diff changeset
1060 if(period >= 1000)
77f530f95826 Fixed error in _dw_msleep on Solaris... fix was already in dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1452
diff changeset
1061 {
77f530f95826 Fixed error in _dw_msleep on Solaris... fix was already in dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1452
diff changeset
1062 req.tv_sec = (int)(period / 1000);
77f530f95826 Fixed error in _dw_msleep on Solaris... fix was already in dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1452
diff changeset
1063 period -= (req.tv_sec * 1000);
77f530f95826 Fixed error in _dw_msleep on Solaris... fix was already in dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1452
diff changeset
1064 }
775
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 req.tv_nsec = period * 10000000;
1463
77f530f95826 Fixed error in _dw_msleep on Solaris... fix was already in dwcompat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1452
diff changeset
1066
775
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 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
1068 #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
1069 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
1070 #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
1071 }
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 /* 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
1074 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
1075 {
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 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
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 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
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 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
1081 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
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 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
1084 }
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 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
1087 {
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
1088 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
1089 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
1090 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
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 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
1093 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
1094 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
1095 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
1096 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
1097 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
1098 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
1099 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
1100 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
1101 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
1102
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 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
1104 }
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
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 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
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 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
1109 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
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 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
1112 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
1113 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
1114 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
1115 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
1116 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
1117 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
1118 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
1119 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
1120 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
1121 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
1122 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
1123 }
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 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
1126 {
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
1127 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
1128 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
1129
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 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
1131 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
1132 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
1133 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
1134 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
1135 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
1136 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
1137 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
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 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
1140 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
1141
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 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
1143 }
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 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
1146 {
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 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
1148
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_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
1150 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
1151 }
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
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 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
1154 {
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 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
1156 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
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 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
1159 {
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 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
1161
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 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
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 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
1165 }
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
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 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
1168 {
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 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
1170 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
1171
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 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
1173 {
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 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
1175 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
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 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
1178 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
1179 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
1180 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
1181
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 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
1183 }
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 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
1185 }
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
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 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
1188 {
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 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
1190 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
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 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
1193 {
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 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
1195 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
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 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
1198 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
1199 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
1200 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
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 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
1203 }
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 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
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
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 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
1208 {
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 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
1210 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
1211
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 (*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
1215 int keys = 0, x, y;
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
1216 GdkModifierType state = 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
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 if (event->is_hint)
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
1219 gdk_window_get_device_position (event->window, gdk_event_get_device((GdkEvent *)event), &x, &y, &state);
775
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 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
1221 {
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 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
1223 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
1224 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
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
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 (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
1228 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
1229 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
1230 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
1231 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
1232 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
1233
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 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
1235 }
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 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
1237 }
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 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
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 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
1242 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
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 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
1245 {
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 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
1247
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 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
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 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
1251 }
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 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
1254 {
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 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
1256 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
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 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
1259 {
1747
f297d8a63aed Added utf8 parameter to key press callback on GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1745
diff changeset
1260 int (*keypressfunc)(HWND, char, int, int, void *, char *) = work.func;
f297d8a63aed Added utf8 parameter to key press callback on GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1745
diff changeset
1261 guint32 unichar = gdk_keyval_to_unicode(event->keyval);
f297d8a63aed Added utf8 parameter to key press callback on GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1745
diff changeset
1262 char utf8[7] = { 0 };
f297d8a63aed Added utf8 parameter to key press callback on GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1745
diff changeset
1263
f297d8a63aed Added utf8 parameter to key press callback on GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1745
diff changeset
1264 g_unichar_to_utf8(unichar, utf8);
f297d8a63aed Added utf8 parameter to key press callback on GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1745
diff changeset
1265
775
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 retval = keypressfunc(work.window, *event->string, event->keyval,
1747
f297d8a63aed Added utf8 parameter to key press callback on GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1745
diff changeset
1267 event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK), work.data, utf8);
775
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 }
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 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
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
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 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
1273 {
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 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
1275 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
1276
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 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
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 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
1280
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 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
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 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
1284 }
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
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 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
1287 {
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 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
1289 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
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 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
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 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
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 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
1296 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
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 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
1299 }
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 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
1302 {
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 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
1304 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
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 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
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 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
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 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
1311 }
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 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
1313 }
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
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
1315 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
1316 {
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 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
1318 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
1319
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 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
1321 {
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 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
1323 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
1324
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
1325 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
1326 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
1327 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
1328 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
1329 }
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 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
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
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
1333 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
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 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
1336 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
1337
1742
cebf830e3da7 Minor GTK3 code cleanups from attempt at fixing combobox event order.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1718
diff changeset
1338 if(g_object_get_data(G_OBJECT(widget), "_dw_recursing"))
775
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 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
1340
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
1341 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
1342 {
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
1343 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
1344
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
1345 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
1346 {
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
1347 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
1348 GtkTreePath *path;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1349
1742
cebf830e3da7 Minor GTK3 code cleanups from attempt at fixing combobox event order.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1718
diff changeset
1350 g_object_set_data(G_OBJECT(widget), "_dw_recursing", GINT_TO_POINTER(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
1351
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1352 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
1353 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1354 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
1355
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1356 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
1357 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1358 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
1359
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1360 if(indices)
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1361 {
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1362 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
1363
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1364 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
1365 }
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
1366 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
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 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1369
1742
cebf830e3da7 Minor GTK3 code cleanups from attempt at fixing combobox event order.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1718
diff changeset
1370 g_object_set_data(G_OBJECT(widget), "_dw_recursing", NULL);
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
1371 }
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
1372 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1373 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
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
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 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
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 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
1379 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
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 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
1382 {
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 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
1384 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1385 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
1386 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
1387 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
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 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
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 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
1392 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
1393 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
1394
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1395 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
1396 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
1397 {
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1398 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
1399 {
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1400 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
1401 }
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1402 else
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1403 {
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
1404 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
1405 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1406 }
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1407 else
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1408 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
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
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1411 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
1412 if(path)
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1413 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1414 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1415
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1416 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
1417 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1418 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
1419 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1420 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
1421 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1422 else
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1423 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1424 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
1425 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1426 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1427 gtk_tree_path_free(path);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1428 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1429 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1430 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1431
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1432 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
1433 }
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 }
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 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
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
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 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
1439 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1440 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
1441 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
1442
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(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
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 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
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 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
1448 {
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 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
1450 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
1451 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
1452 void *itemdata = NULL;
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1453 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
1454
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1455 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
1456 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1457 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
1458 return TRUE;
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1459 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1460
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1461 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
1462 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
1463 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1464 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
1465 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1466 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
1467 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
1468 }
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
1469 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
1470 {
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
1471 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
1472 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
1473 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1474 else
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1475 {
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
1476 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
1477
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
1478 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
1479 {
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
1480 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
1481
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
1482 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
1483 {
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
1484 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
1485
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
1486 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
1487 }
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
1488 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
1489 }
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
1490 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1491 }
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1492 else
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1493 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1494 GtkTreePath *path;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1495
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1496 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
1497 if(path)
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1498 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1499 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1500
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1501 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
1502 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1503 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
1504 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1505 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
1506 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
1507 }
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
1508 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
1509 {
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
1510 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
1511 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
1512 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1513 else
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1514 {
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
1515 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
1516
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
1517 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
1518 {
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
1519 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
1520
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
1521 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
1522 }
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1523 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1524 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1525 gtk_tree_path_free(path);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1526 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1527 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1528 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1529 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1530 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
1531 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1532
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1533 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
1534 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1535 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
1536 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
1537
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1538 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
1539 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1540 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
1541 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
1542 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1543 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
1544 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1545
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1546 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
1547 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1548 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
1549 GdkEventKey *keyevent = (GdkEventKey *)event;
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1550 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
1551 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
1552
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1553 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
1554 {
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1555 /* 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
1556 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
1557 (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
1558 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1559 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
1560 char *text = NULL;
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1561
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1562 /* 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
1563 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
1564 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1565 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
1566 }
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 /* Sanity check */
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1569 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
1570 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1571 GtkTreePath *path;
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1572 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
1573
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1574 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
1575 if(path)
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1576 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1577 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1578
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1579 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
1580 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1581 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
1582 {
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1583 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
1584 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
1585 }
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 gtk_tree_path_free(path);
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1588 }
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 }
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
1591 }
775
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 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
1593 }
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 /* 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
1596 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
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 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
1599 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
1600 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
1601
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(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
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 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
1605 {
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 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
1607 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
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 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1610 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
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1613
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1614 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
1615 {
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 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
1617 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
1618
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 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
1620 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1621 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
1622 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
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 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
1625 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1626
786
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
1627 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
1628 {
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
1629 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
1630 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
1631 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
1632 int retval = FALSE;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1633
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
1634 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
1635 {
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
1636 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
1637
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
1638 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
1639 {
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
1640 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
1641 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
1642 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
1643 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1644 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1645 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
1646 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1647
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1648 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
1649 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1650 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
1651
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1652 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
1653 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
1654
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1655 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
1656 }
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
1578
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1658 static gint _value_changed_event(GtkWidget *widget, gpointer data)
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1659 {
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1660 GtkWidget *slider, *spinbutton, *scrollbar;
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1661 GtkAdjustment *adjustment = (GtkAdjustment *)widget;
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1662 int max, val;
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1663
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1664 if(!GTK_IS_ADJUSTMENT(adjustment))
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1665 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(widget), "_dw_adjustment");
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1666
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1667 slider = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_slider");
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1668 spinbutton = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_spinbutton");
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1669 scrollbar = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_scrollbar");
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1670
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1671 max = _round_value(gtk_adjustment_get_upper(adjustment));
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1672 val = _round_value(gtk_adjustment_get_value(adjustment));
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1673
1486
5cfbf2715eec Code simplification on GTK2 and ported the fix to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1482
diff changeset
1674 if(g_object_get_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event"))
5cfbf2715eec Code simplification on GTK2 and ported the fix to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1482
diff changeset
1675 return FALSE;
5cfbf2715eec Code simplification on GTK2 and ported the fix to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1482
diff changeset
1676
5cfbf2715eec Code simplification on GTK2 and ported the fix to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1482
diff changeset
1677 if (slider || spinbutton || scrollbar)
775
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 {
1578
36f0cfda3be3 Fix value_changed code for GTK3... thought this used to work...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1577
diff changeset
1679 SignalHandler work = _get_signal_handler(widget, 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
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 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
1682 {
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 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
1684
1583
525c4c9d04c6 After switching to non-deprecated functions in GTK3 like...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1579
diff changeset
1685 if(slider && gtk_orientable_get_orientation(GTK_ORIENTABLE(slider)) == GTK_ORIENTATION_VERTICAL)
775
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 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
1687 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
1688 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
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 }
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 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
1692 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1693
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1694 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
1695 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1696 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
1697
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 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
1699 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1700 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
1701 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1702 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
1703 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
1704 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
1705 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
1706 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1707 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1708 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
1709 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1710
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1711 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
1712 {
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 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
1714 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
1715
1289
5fb54aeba5e0 Allow removing icons from containers on GTK2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1287
diff changeset
1716 /* Quick dropout for non-handle */
5fb54aeba5e0 Allow removing icons from containers on GTK2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1287
diff changeset
1717 if(!icon)
5fb54aeba5e0 Allow removing icons from containers on GTK2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1287
diff changeset
1718 return NULL;
5fb54aeba5e0 Allow removing icons from containers on GTK2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1287
diff changeset
1719
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1720 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
1721 {
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1722 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
1723
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1724 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
1725 *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
1726 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
1727 *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
1728
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
1729 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
1730 }
775
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
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 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
1733 {
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(_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
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 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
1737 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
1738 }
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
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 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
1742 {
1327
e4ef8d86dfc4 Added support for GdkPixbuf inline data in GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1322
diff changeset
1743 GdkPixbuf *icon_pixbuf;
e4ef8d86dfc4 Added support for GdkPixbuf inline data in GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1322
diff changeset
1744
e4ef8d86dfc4 Added support for GdkPixbuf inline data in GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1322
diff changeset
1745 if(data[0] == 'G' && data[1] == 'd' && data[2] == 'k' && data[3] == 'P')
e4ef8d86dfc4 Added support for GdkPixbuf inline data in GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1322
diff changeset
1746 icon_pixbuf = gdk_pixbuf_new_from_inline(-1, (const guint8 *)data, FALSE, NULL);
e4ef8d86dfc4 Added support for GdkPixbuf inline data in GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1322
diff changeset
1747 else
e4ef8d86dfc4 Added support for GdkPixbuf inline data in GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1322
diff changeset
1748 icon_pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)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
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 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
1751 *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
1752 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
1753 *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
1754
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 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
1756 }
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 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
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
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1760 void _init_thread(void)
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1761 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
1762 GdkRGBA *foreground = malloc(sizeof(GdkRGBA));
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
1763
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
1764 foreground->alpha = foreground->red = foreground->green = foreground->blue = 0.0;
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1765 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
1766 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
1767 }
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 /* 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
1770 #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
1771 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
1772 {
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 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
1774 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
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 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
1777 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
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 /* 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
1780 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
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 _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
1783 _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
1784 _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
1785 _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
1786 _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
1787 _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
1788 _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
1789 _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
1790 _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
1791 _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
1792 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1793 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1794 #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
1795
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1796 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1797 * 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
1798 * 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
1799 * 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
1800 * 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
1801 */
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 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
1803 {
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 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
1805 {
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 _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
1807 _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
1808 _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
1809 }
1384
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1810
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1811 /* Setup the private data directory */
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1812 if(argc && argv && *argc > 0 && (*argv)[0])
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1813 {
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1814 char *pathcopy = strdup((*argv)[0]);
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1815 char *pos = strrchr(pathcopy, '/');
1506
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1816 char *binname = pathcopy;
1384
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1817
1506
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1818 /* If we have a / then...
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1819 * the binary name should be at the end.
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1820 */
1384
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1821 if(pos)
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1822 {
1506
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1823 binname = pos + 1;
1384
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1824 *pos = 0;
1506
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1825 }
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1826
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1827 if(*binname)
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1828 {
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1829 char *binpos = strstr(pathcopy, "/bin");
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1830
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1831 if(binpos)
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1832 strncpy(_dw_share_path, pathcopy, (size_t)(binpos - pathcopy));
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1833 else
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1834 strcpy(_dw_share_path, "/usr/local");
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1835 strcat(_dw_share_path, "/share/");
308bfa8426db Rewrite application directory detection code for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1505
diff changeset
1836 strcat(_dw_share_path, binname);
1384
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1837 }
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1838 if(pathcopy)
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1839 free(pathcopy);
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1840 }
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1841 /* If that failed... just get the current directory */
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1842 if(!_dw_share_path[0] && !getcwd(_dw_share_path, PATH_MAX))
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1843 _dw_share_path[0] = '/';
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
1844
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
1845 #if !GLIB_CHECK_VERSION(2,31,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
1846 g_thread_init(NULL);
1355
dd252596227b Removed a now unused variable on GTK in dw_html_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1354
diff changeset
1847 #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
1848 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
1849
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_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
1851
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1852 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
1853 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
1854 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
1855
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
1856 _init_thread();
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
1857
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
1858 /* 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
1859 _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
1860
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 #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
1862 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
1863 #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
1864
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 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
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
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 /*
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 * 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
1870 */
1528
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1524
diff changeset
1871 void API dw_main(void)
775
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 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
1874 _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
1875 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
1876 _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
1877 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
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
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 /*
1528
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1524
diff changeset
1881 * Causes running dw_main() to return.
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1524
diff changeset
1882 */
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1524
diff changeset
1883 void API dw_main_quit(void)
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1524
diff changeset
1884 {
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1524
diff changeset
1885 gtk_main_quit();
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1524
diff changeset
1886 }
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1524
diff changeset
1887
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1524
diff changeset
1888 /*
775
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 * 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
1890 * 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
1891 * 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
1892 */
1528
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1524
diff changeset
1893 void API dw_main_sleep(int milliseconds)
775
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 {
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 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
1896 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
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 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
1899
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 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
1901 {
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 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
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 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
1905
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 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
1907 {
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1908 int _locked_by_me = FALSE;
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1909
775
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 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
1911 {
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1912 if(!pthread_getspecific(_dw_mutex_key))
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1913 {
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1914 gdk_threads_enter();
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1915 pthread_setspecific(_dw_mutex_key, (void *)1);
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1916 _locked_by_me = TRUE;
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1917 }
775
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 _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
1919 }
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1920 if(curr == _dw_thread && gtk_events_pending())
775
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 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
1922 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
1923 _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
1924 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
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 _dw_thread = orig;
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1927 if(_locked_by_me)
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1928 {
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1929 pthread_setspecific(_dw_mutex_key, NULL);
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1930 gdk_threads_leave();
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1931 }
775
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 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
1934 }
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 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
1937 _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
1938 }
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
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 /*
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 * 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
1942 */
1528
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1524
diff changeset
1943 void API dw_main_iteration(void)
775
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 {
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1945 pthread_t orig = _dw_thread;
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1946 pthread_t curr = pthread_self();
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1947 int _locked_by_me = FALSE;
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1948
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1949 if(_dw_thread == (pthread_t)-1)
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1950 {
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1951 if(!pthread_getspecific(_dw_mutex_key))
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1952 {
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1953 gdk_threads_enter();
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1954 pthread_setspecific(_dw_mutex_key, (void *)1);
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1955 _locked_by_me = TRUE;
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1956 }
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1957 _dw_thread = curr;
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1958 }
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1959 if(curr == _dw_thread && gtk_events_pending())
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1960 gtk_main_iteration();
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1961 else
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1962 sched_yield();
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1963 if(orig == (pthread_t)-1)
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1964 {
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1965 _dw_thread = orig;
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1966 if(_locked_by_me)
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1967 {
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1968 pthread_setspecific(_dw_mutex_key, NULL);
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1969 gdk_threads_leave();
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1970 }
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
1971 }
775
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
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 /*
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 * 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
1976 * 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
1977 * 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
1978 * 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
1979 */
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 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
1981 {
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 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
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
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 * 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
1987 * 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
1988 * 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
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 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
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 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
1993
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 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
1995 {
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 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
1997 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
1998 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
1999 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
2000 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
2001 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
2002 }
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 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
2004 }
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 /*
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 * 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
2008 * 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
2009 * 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
2010 * 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
2011 * 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
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 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
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 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
2016 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
2017 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
2018 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
2019 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
2020 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
2021 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
2022 }
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 /*
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 * 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
2026 * 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
2027 * 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
2028 * 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
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 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
2031 {
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 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
2033 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
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 /* _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
2036 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
2037 {
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 _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
2039 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
2040 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
2041 }
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 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
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 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
2046 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
2047 }
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 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
2049 {
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 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
2051 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
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
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 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
2055 {
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 _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
2057 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
2058 }
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 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
2061 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
2062 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
2063 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
2064 }
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
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 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
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 *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
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 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
2071 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
2072
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 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
2074 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
2075 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
2076 }
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
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 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
2079 {
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 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
2081
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 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
2083 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
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 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
2086 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
2087 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
2088 }
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
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 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
2091 {
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 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
2093
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(!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
2095 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
2096
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_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
2098 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
2099 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
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 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
2103 {
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 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
2105
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 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
2107 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
2108
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 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
2110 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
2111 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
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
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 /*
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2115 * Displays a debug message on the console...
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2116 * Parameters:
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2117 * format: printf style format string.
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2118 * ...: Additional variables for use in the format.
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2119 */
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2120 void API dw_debug(char *format, ...)
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2121 {
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2122 va_list args;
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2123 char outbuf[1025] = {0};
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2124
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2125 va_start(args, format);
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2126 vsnprintf(outbuf, 1024, format, args);
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2127 va_end(args);
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2128
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2129 fprintf(stderr, "%s", outbuf);
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2130 }
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2131
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2132 /*
775
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 * 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
2134 * 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
2135 * 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
2136 * 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
2137 * 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
2138 * ...: 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
2139 */
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 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
2141 {
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 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
2143 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
2144 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
2145 va_list args;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2146 char outbuf[1025] = {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
2147 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
2148 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
2149 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
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 va_start(args, format);
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
2152 vsnprintf(outbuf, 1024, 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
2153 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
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 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
2156 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
2157 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
2158
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 /* 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
2160 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
2161 {
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 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
2163 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
2164 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
2165 }
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 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
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 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
2169 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
2170 }
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(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
2173 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
2174 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
2175 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
2176 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
2177 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
2178 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
2179 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
2180
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 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
2182 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
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(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
2185 {
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 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
2187 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
2188
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 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
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 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
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
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 /* 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
2195 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
2196 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
2197 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
2198 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
2199 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
2200
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
2201 text_width = min( width, dw_screen_width() - extra_width - 100 );
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
2202 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
2203
775
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 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
2205
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 /* 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
2207 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
2208
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 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
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 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
2212
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 /* 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
2214 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
2215 {
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 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
2217 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
2218 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
2219 }
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 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
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 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
2223 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
2224 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
2225 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
2226 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
2227 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
2228 }
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 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
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 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
2232 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
2233 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
2234 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
2235 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
2236 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
2237 }
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_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
2239 {
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 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
2241 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
2242 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
2243 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
2244 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
2245 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
2246 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
2247 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
2248 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
2249 }
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 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
2252 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
2253 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
2254
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 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
2256
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 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
2258
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
2259 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
2260 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2261
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2262 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2263 * 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
2264 * 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
2265 * 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
2266 */
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 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
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 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
2270 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
2271
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 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
2273 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
2274
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 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
2276 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
2277 {
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 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
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
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 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
2283 }
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_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
2285 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
2286 }
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
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 * 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
2290 * 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
2291 * 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
2292 */
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 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
2294 {
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 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
2296
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 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
2298 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
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 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
2301 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
2302 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
2303 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
2304 }
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
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 /*
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 * 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
2308 * 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
2309 * 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
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 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
2312 {
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 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
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 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
2316 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
2317
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 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
2319 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
2320 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
2321 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
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
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 /*
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 * 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
2326 * 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
2327 * 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
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 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
2330 {
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 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
2332 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
2333 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
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 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
2336 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
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 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
2339 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
2340 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
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_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
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 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
2345 {
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2346 GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(handle));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2347 if (window && gtk_widget_get_mapped(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
2348 {
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
2349 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
2350 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
2351
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2352 /* If we had a size request before shown */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2353 if (width || height)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2354 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2355 /* Call the size function again now that we are realized */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2356 dw_window_set_size(handle, width, height);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2357 /* Clear out the data so we don't do it again */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2358 g_object_set_data(G_OBJECT(handle), "_dw_width", NULL);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2359 g_object_set_data(G_OBJECT(handle), "_dw_height", NULL);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2360 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2361
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2362 /* If we had a position request before shown */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2363 if (g_object_get_data(G_OBJECT(handle), "_dw_pos"))
775
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 {
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2365 int x = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_x"));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2366 int y = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_y"));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2367
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2368 /* Call the position function again now that we are realized */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2369 dw_window_set_pos(handle, x, y);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2370 /* Clear out the data so we don't do it again */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2371 g_object_set_data(G_OBJECT(handle), "_dw_pos", 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
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
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2374 gdk_window_raise(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
2375 gdk_flush();
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2376 gdk_window_show(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
2377 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
2378 }
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 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
2380 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
2381 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
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 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
2384 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
2385 }
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
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 /*
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 * 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
2389 * 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
2390 * 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
2391 */
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 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
2393 {
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 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
2395 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
2396
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 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
2398 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
2399
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 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
2401 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
2402 {
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 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
2404 }
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 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
2406 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
2407 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
2408 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
2409 }
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 /*
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 * 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
2413 * 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
2414 * 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
2415 */
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 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
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 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
2419 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
2420
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 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
2422 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
2423
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 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
2425 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
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 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
2428 }
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 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
2430 {
1656
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2431 GtkWidget *box, *handle2 = 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
2432 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
2433
1656
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2434 /* Handle the invisible event box if it exists */
775
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 if(eventbox && GTK_IS_WIDGET(eventbox))
1656
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2436 handle2 = eventbox;
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2437
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2438 /* Check if we are removing a widget from a box */
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2439 if((box = gtk_widget_get_parent(handle2)) && GTK_IS_GRID(box))
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2440 {
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2441 /* Get the number of items in the box... */
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2442 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2443
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2444 if(boxcount > 0)
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2445 {
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2446 /* Decrease the count by 1 */
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2447 boxcount--;
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2448 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount));
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2449 }
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2450 }
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2451 /* Finally destroy the widget */
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
2452 gtk_widget_destroy(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
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 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
2455 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
2456 }
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
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 /* 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
2459 * 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
2460 * 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
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 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
2463 {
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
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 /*
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 * 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
2468 * 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
2469 * 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
2470 * 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
2471 */
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 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
2473 {
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 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
2475
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 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
2477 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
2478 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
2479 }
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
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 /*
1076
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2482 * 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
2483 * Parameters:
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2484 * 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
2485 */
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2486 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
2487 {
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2488 char *oldfont = _DWDefaultFont;
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2489
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2490 _DWDefaultFont = strdup(fontname);
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2491
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2492 if(oldfont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2493 free(oldfont);
1076
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2494 }
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2495
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
2496 /* 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
2497 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
2498 {
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
2499 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
2500
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
2501 /* 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
2502 * 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
2503 * 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
2504 */
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
2505 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
2506 {
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
2507 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
2508 *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
2509 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
2510 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
2511 }
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
2512 }
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
2513
1076
dbaf1b11c301 Added stub dw_font_set_default() functions for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1072
diff changeset
2514 /*
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2515 * 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
2516 * 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
2517 * 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
2518 * 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
2519 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2520 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
2521 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2522 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
2523 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
2524 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
2525 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
2526 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
2527
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2528 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
2529 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
2530 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2531 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
2532 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
2533 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
2534 }
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
2535 /* 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
2536 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
2537 {
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
2538 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
2539 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
2540 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
2541 }
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2542 else if(GTK_IS_COMBO_BOX(handle) || GTK_IS_BUTTON(handle))
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2543 {
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2544 GtkWidget *tmp = gtk_bin_get_child(GTK_BIN(handle));
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2545 if(tmp)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2546 handle2 = tmp;
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
2547 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2548
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
2549 _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
2550
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 /* 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
2552 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
2553 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
2554 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
2555 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
2556
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2557 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
2558
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2559 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
2560 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2561 gtk_widget_override_font(handle2, pfont);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2562 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
2563 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2564 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
2565 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
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
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
2568 /* 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
2569 * 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
2570 * 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
2571 * 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
2572 * 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
2573 */
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
2574 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
2575 {
1576
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2576 GtkFontChooser *fd;
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
2577 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
2578 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
2579 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
2580 char *retfont = NULL;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2581
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2582 /* 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
2583 * 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
2584 * 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
2585 */
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
2586 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
2587 {
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
2588 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
2589 *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
2590 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
2591 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
2592 }
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 DW_MUTEX_LOCK;
1576
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2595 fd = (GtkFontChooser *)gtk_font_chooser_dialog_new("Choose font", NULL);
1057
0cd0089ee17d Fix issue with using/freeing the wrong variable in GTK3 font chooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1054
diff changeset
2596 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
2597 {
1576
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2598 gtk_font_chooser_set_font(fd, 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
2599 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
2600 }
1576
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2601
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
2602 gtk_widget_show(GTK_WIDGET(fd));
1576
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2603
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2604 if(gtk_dialog_run(GTK_DIALOG(fd)) == GTK_RESPONSE_OK)
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2605 {
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2606 char *fontname = gtk_font_chooser_get_font(fd);
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2607 if(fontname && (retfont = strdup(fontname)))
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2608 {
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2609 int len = strlen(fontname);
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2610 /* Convert to Dynamic Windows format if we can... */
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2611 if(len > 0 && isdigit(fontname[len-1]))
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2612 {
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2613 int size, x=len-1;
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2614
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2615 while(x > 0 && fontname[x] != ' ')
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2616 {
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2617 x--;
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2618 }
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2619 size = atoi(&fontname[x]);
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2620 /* If we were able to find a valid size... */
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2621 if(size > 0)
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2622 {
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2623 /* Null terminate after the name...
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2624 * and create the Dynamic Windows style font.
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2625 */
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2626 fontname[x] = 0;
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2627 snprintf(retfont, len+1, "%d.%s", size, fontname);
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2628 }
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2629 }
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2630 g_free(fontname);
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2631 }
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2632 }
85fa989dc833 Switched to using new GtkFontChooserDialog for GTK3 since GtkFontSelectionDialog is deprecated.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1575
diff changeset
2633 gtk_widget_destroy(GTK_WIDGET(fd));
1052
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2634 DW_MUTEX_UNLOCK;
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2635 return retfont;
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2636 }
c008a186b735 Added dw_font_choose() on GTK3 for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1046
diff changeset
2637
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2638 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2639 * 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
2640 * 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
2641 * 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
2642 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2643 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
2644 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2645 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
2646 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
2647 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
2648 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
2649 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
2650 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
2651
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2652 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
2653 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
2654 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2655 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
2656 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
2657 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
2658 }
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
2659 /* 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
2660 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
2661 {
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
2662 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
2663 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
2664 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
2665 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2666
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2667 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
2668 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
2669 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2670 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
2671 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
2672 {
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
2673 int len, x;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2674
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2675 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
2676 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
2677 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
2678 /* 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
2679 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
2680 {
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
2681 int size;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
2682
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
2683 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
2684 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
2685 {
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
2686 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
2687 }
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
2688 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
2689 /* 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
2690 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
2691 {
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
2692 /* 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
2693 * 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
2694 */
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
2695 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
2696 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
2697 }
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
2698 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2699 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
2700 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2701 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2702 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
2703 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
2704 }
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 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
2707 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2708 GdkRGBA *old = (GdkRGBA *)g_object_get_data(G_OBJECT(handle), "_dw_foregdk");
775
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 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
2711 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
2712
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2713 old = (GdkRGBA *)g_object_get_data(G_OBJECT(handle), "_dw_backgdk");
775
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
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 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
2716 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
2717 }
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 /* Free old color pointers and allocate new ones */
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2720 static void _save_gdk_colors(HWND handle, GdkRGBA fore, GdkRGBA back)
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2721 {
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2722 GdkRGBA *foregdk = malloc(sizeof(GdkRGBA));
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2723 GdkRGBA *backgdk = malloc(sizeof(GdkRGBA));
775
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
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 _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
2726
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2727 *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
2728 *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
2729
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2730 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
2731 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
2732 }
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 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
2735 {
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 /* 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
2737 * 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
2738 */
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2739 GdkRGBA forecolor, backcolor;
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2740
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2741 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
2742 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2743 forecolor.alpha = 1.0;
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2744 forecolor.red = (gdouble)DW_RED_VALUE(fore) / 255.0;
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2745 forecolor.green = (gdouble)DW_GREEN_VALUE(fore) / 255.0;
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2746 forecolor.blue = (gdouble)DW_BLUE_VALUE(fore) / 255.0;
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2747
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2748 gtk_widget_override_color(handle, GTK_STATE_NORMAL, &forecolor);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2749 gtk_widget_override_color(handle, GTK_STATE_ACTIVE, &forecolor);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2750 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2751 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
2752 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2753 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
2754
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2755 gtk_widget_override_color(handle, GTK_STATE_NORMAL, &forecolor);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2756 gtk_widget_override_color(handle, GTK_STATE_ACTIVE, &forecolor);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2757 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2758 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
2759 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2760 backcolor.alpha = 1.0;
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2761 backcolor.red = (gdouble)DW_RED_VALUE(back) / 255.0;
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2762 backcolor.green = (gdouble)DW_GREEN_VALUE(back) / 255.0;
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2763 backcolor.blue = (gdouble)DW_BLUE_VALUE(back) / 255.0;
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2764
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2765 gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, &backcolor);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2766 gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, &backcolor);
775
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 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
2769 {
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 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
2771
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2772 gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, &backcolor);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
2773 gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, &backcolor);
775
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
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 _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
2777
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 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
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 /*
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 * 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
2782 * 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
2783 * 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
2784 * 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
2785 * 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
2786 */
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 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
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 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
2790 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
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 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
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 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
2795 {
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 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
2797 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
2798 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
2799 }
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
2800 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
2801 {
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 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
2803 if(tmp)
1637
c8a0daa53e49 In GTK 3.4 foreground colors are now inherited from the parent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1634
diff changeset
2804 {
775
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 handle2 = tmp;
1637
c8a0daa53e49 In GTK 3.4 foreground colors are now inherited from the parent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1634
diff changeset
2806 fore = DW_CLR_DEFAULT;
c8a0daa53e49 In GTK 3.4 foreground colors are now inherited from the parent.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1634
diff changeset
2807 }
775
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 }
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 _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
2811
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 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
2813 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
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
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 /*
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 * 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
2818 * 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
2819 * 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
2820 * 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
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 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
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 /* 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
2825 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
2826 }
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
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2828 static GdkDeviceManager *manager = NULL;
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2829
775
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 * 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
2832 * 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
2833 * 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
2834 */
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 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
2836 {
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 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
2838
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 DW_MUTEX_LOCK;
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2840 manager = gdk_display_get_device_manager(gtk_widget_get_display(handle));
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2841 gdk_device_grab(gdk_device_manager_get_client_pointer(manager),
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2842 gtk_widget_get_window(handle),
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2843 GDK_OWNERSHIP_WINDOW,
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2844 FALSE,
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2845 GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK,
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2846 NULL,
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2847 GDK_CURRENT_TIME);
775
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 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
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 /*
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 * 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
2853 * 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
2854 * 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
2855 * 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
2856 */
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 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
2858 {
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 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
2860 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
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 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
2863 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
2864 {
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
2865 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
2866 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
2867 }
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 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
2869 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
2870 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
2871 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
2872 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
2873 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
2874 if(cursor)
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2875 g_object_unref(cursor);
775
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 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
2877 }
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
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 /*
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 * 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
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 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
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 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
2885
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 DW_MUTEX_LOCK;
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2887 gdk_device_ungrab(gdk_device_manager_get_client_pointer(manager), GDK_CURRENT_TIME);
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2888 manager = 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
2889 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
2890 }
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
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 /*
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 * 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
2894 * 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
2895 * 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
2896 * 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
2897 * 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
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 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
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 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
2902 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
2903 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
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 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
2906 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
2907 {
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 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
2909
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 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
2911
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 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
2913 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
2914 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
2915 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
2916 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
2917
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 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
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 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
2921 {
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
2922 GtkWidget *box = dw_box_new(DW_VERT, 0);
1452
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
2923 GtkWidget *grid = gtk_grid_new();
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
2924
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
2925 gtk_widget_show_all(grid);
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
2926
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2927 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
2928
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 gtk_window_set_title(GTK_WINDOW(tmp), title);
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
2930 gtk_window_set_resizable(GTK_WINDOW(tmp), (flStyle & DW_FCF_SIZEBORDER) ? 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
2931
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 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
2933
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 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
2935 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
2936
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(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
2938 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
2939
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 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
2941 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
2942
1491
d77b8cf25f04 Code cleanup and removed some erroneous code for GTK in dw_window_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1486
diff changeset
2943 if(flStyle & (DW_FCF_BORDER | DW_FCF_DLGBORDER))
775
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 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
2945
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 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
2947 gtk_window_maximize(GTK_WINDOW(tmp));
1491
d77b8cf25f04 Code cleanup and removed some erroneous code for GTK in dw_window_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1486
diff changeset
2948
775
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 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
2950 gtk_window_iconify(GTK_WINDOW(tmp));
1491
d77b8cf25f04 Code cleanup and removed some erroneous code for GTK in dw_window_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1486
diff changeset
2951
1388
8fe15c1648c9 Fix windows on GTK that aren't supposed to have a close button..
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1386
diff changeset
2952 /* Either the CLOSEBUTTON or SYSMENU flags should make it deletable */
1491
d77b8cf25f04 Code cleanup and removed some erroneous code for GTK in dw_window_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1486
diff changeset
2953 gtk_window_set_deletable(GTK_WINDOW(tmp), (flStyle & (DW_FCF_CLOSEBUTTON | DW_FCF_SYSMENU)) ? 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
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 gdk_window_set_decorations(gtk_widget_get_window(tmp), flags);
1482
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
2956 if(!flags)
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
2957 gtk_window_set_decorated(GTK_WINDOW(tmp), 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
2958
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 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
2960 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
2961
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 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
2963 g_object_set_data(G_OBJECT(tmp), "_dw_size", GINT_TO_POINTER(1));
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
2964
1452
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
2965 gtk_grid_attach(GTK_GRID(grid), box, 0, 1, 1, 1);
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
2966 gtk_container_add(GTK_CONTAINER(tmp), grid);
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
2967 g_object_set_data(G_OBJECT(tmp), "_dw_boxhandle", (gpointer)box);
1452
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
2968 g_object_set_data(G_OBJECT(tmp), "_dw_grid", (gpointer)grid);
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
2969 gtk_widget_add_events(GTK_WIDGET(tmp), GDK_PROPERTY_CHANGE_MASK);
775
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 }
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 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
2972 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
2973 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
2974 }
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
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 /*
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 * 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
2978 * 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
2979 * 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
2980 * 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
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 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
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 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
2985 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
2986
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 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
2988 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
2989 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
2990
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 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
2992 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
2993 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
2994 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
2995 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
2996 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
2997 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
2998 }
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
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 * 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
3002 * 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
3003 * 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
3004 * 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
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 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
3007 {
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 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
3009 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
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 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
3012 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
3013 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
3014
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
3015 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
3016 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
3017
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 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
3019 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
3020 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
3021 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
3022 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
3023
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 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
3025 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
3026 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
3027 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
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 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
3030 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
3031 }
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
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 * 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
3035 * 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
3036 * 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
3037 * 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
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 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
3040 {
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 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
3042 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
3043
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 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
3045 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
3046
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 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
3048 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
3049 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
3050 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
3051 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
3052 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
3053 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
3054 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
3055 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
3056 }
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 /*
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 * 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
3060 * 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
3061 * 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
3062 * 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
3063 */
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 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
3065 {
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 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
3067 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
3068
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 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
3070 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
3071
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 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
3073 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
3074 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
3075 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
3076 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
3077 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
3078 {
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 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
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 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
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 * 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
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 * 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
3089 * 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
3090 * 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
3091 */
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 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
3093 {
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
3094 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
3095 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
3096
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 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
3098 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
3099 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
3100 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
3101
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
3102 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
3103 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
3104 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
3105 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
3106 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
3107 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
3108 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
3109 gtk_widget_show(frame);
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3110 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3111 dw_window_set_font(frame, _DWDefaultFont);
775
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 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
3113 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
3114 }
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 /*
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 * 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
3118 * 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
3119 * 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
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 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
3122 {
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 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
3124 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
3125
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 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
3127 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
3128 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
3129 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
3130 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
3131 }
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 /*
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 * 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
3135 * 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
3136 * 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
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 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
3139 {
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 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
3141 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
3142
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 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
3144 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
3145 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
3146 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
3147 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
3148 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
3149 }
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
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 /*
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 * 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
3153 * 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
3154 * 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
3155 * 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
3156 */
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 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
3158 {
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 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
3160 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
3161
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_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
3163 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
3164 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
3165 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
3166 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
3167 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
3168 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
3169 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
3170 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
3171 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
3172 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
3173 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
3174 }
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 /*
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 * 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
3178 * 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
3179 * 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
3180 * 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
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 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
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 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
3185 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
3186 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
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 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
3189 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
3190 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
3191 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
3192 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
3193 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
3194 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
3195 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
3196 }
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
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 /*
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 * 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
3200 * 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
3201 * 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
3202 * 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
3203 * 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
3204 */
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 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
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 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
3208 GtkAccelGroup *accel_group;
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3209 GtkWidget *box;
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3210 HMENUI tmp = 0;
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3211
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3212 DW_MUTEX_LOCK;
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3213 if(GTK_IS_WINDOW(location) &&
1452
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
3214 (box = (GtkWidget *)g_object_get_data(G_OBJECT(location), "_dw_grid")))
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3215 {
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3216 /* If there is an existing menu bar, remove it */
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3217 GtkWidget *oldmenu = (GtkWidget *)g_object_get_data(G_OBJECT(location), "_dw_menubar");
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3218 if(oldmenu)
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3219 gtk_widget_destroy(oldmenu);
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3220 /* Create a new menu bar */
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3221 tmp = gtk_menu_bar_new();
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3222 gtk_widget_show(tmp);
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3223 accel_group = gtk_accel_group_new();
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3224 g_object_set_data(G_OBJECT(tmp), "_dw_accel", (gpointer)accel_group);
1452
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
3225 /* Save pointers to each other */
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3226 g_object_set_data(G_OBJECT(location), "_dw_menubar", (gpointer)tmp);
1452
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
3227 g_object_set_data(G_OBJECT(tmp), "_dw_window", (gpointer)location);
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
3228 gtk_grid_attach(GTK_GRID(box), tmp, 0, 0, 1, 1);
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3229 }
775
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 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
3231 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
3232 }
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 /*
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 * 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
3236 * 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
3237 * 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
3238 */
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 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
3240 {
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 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
3242 {
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 int _locked_by_me = FALSE;
1452
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
3244 GtkWidget *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
3245
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 DW_MUTEX_LOCK;
1452
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
3247 /* If it is a menu bar, try to delete the reference to it */
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
3248 if(GTK_IS_MENU_BAR(*menu) &&
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
3249 (window = (GtkWidget *)g_object_get_data(G_OBJECT(*menu), "_dw_window")))
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
3250 g_object_set_data(G_OBJECT(window), "_dw_menubar", NULL);
dbe16031ffb4 Changes for GTK to make top-level windows act more like on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1451
diff changeset
3251 /* Actually destroy the menu */
775
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 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
3253 *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
3254 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
3255 }
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
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 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
3259 {
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 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
3261 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
3262
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 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
3264 {
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 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
3266 {
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 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
3268 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
3269 }
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 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
3271 {
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 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
3273 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
3274 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
3275 }
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 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
3278 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
3279 }
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
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 /*
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 * 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
3283 * 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
3284 * 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
3285 * 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
3286 * 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
3287 * 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
3288 * 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
3289 * 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
3290 * 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
3291 */
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 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
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 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
3295 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
3296 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
3297 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
3298
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 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
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 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
3302 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
3303 }
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 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
3306 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
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 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
3309 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
3310
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 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
3312 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
3313 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
3314 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3315 char numbuf[11] = {0};
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3316
775
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 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
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 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
3320 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
3321 {
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 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
3323 #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
3324 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
3325 #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
3326 }
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3327 snprintf(numbuf, 10, "%lu", 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
3328 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
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 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
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 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
3333 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
3334 {
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 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
3336 #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
3337 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
3338 #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
3339 }
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3340 snprintf(numbuf, 10, "%lu", 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
3341 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
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 }
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
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 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
3346
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3347 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
3348 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3349 char tempbuf[101] = {0};
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3350
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3351 snprintf(tempbuf, 100, "_dw_submenu%d", 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
3352 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
3353 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
3354 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
3355 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
3356 }
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
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 (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
3359 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
3360 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
3361 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
3362
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 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
3364 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
3365 /*
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 * 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
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 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
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 _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
3371 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
3372 _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
3373 }
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 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
3376 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
3377
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 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
3379 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
3380 }
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
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 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
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 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
3385 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
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((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
3388 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
3389
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 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
3391 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3392 char tempbuf[101] = {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
3393 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
3394
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3395 snprintf(tempbuf, 100, "_dw_submenu%d", 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
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 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
3398 {
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 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
3400 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
3401 }
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 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
3404 }
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 /*
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 * 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
3408 * 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
3409 * 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
3410 * 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
3411 * 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
3412 * 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
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 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
3415 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3416 char numbuf[11];
775
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 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
3418 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
3419
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 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
3421 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
3422
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 DW_MUTEX_LOCK;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3424 snprintf(numbuf, 10, "%lu", 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
3425 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
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(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
3428 {
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 _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
3430 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
3431 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
3432 _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
3433 }
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 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
3435 }
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 /*
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 * 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
3439 * 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
3440 * 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
3441 * 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
3442 * 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
3443 */
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 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
3445 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3446 char numbuf[11] = {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
3447 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
3448 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
3449 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
3450
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 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
3452 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
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 DW_MUTEX_LOCK;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
3455 snprintf(numbuf, 10, "%lu", 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
3456 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
3457
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 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
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 ( 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
3461 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
3462 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
3463 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
3464
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 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
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 _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
3468 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
3469 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
3470 _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
3471 }
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 }
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 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
3474 {
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 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
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 _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
3478 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
3479 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
3480 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
3481 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
3482 _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
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 }
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 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
3486 }
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
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 /*
1373
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3489 * Deletes the menu item specified.
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3490 * Parameters:
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3491 * menu: The handle to the menu in which the item was appended.
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3492 * id: Menuitem id.
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3493 * Returns:
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3494 * DW_ERROR_NONE (0) on success or DW_ERROR_UNKNOWN on failure.
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3495 */
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3496 int API dw_menu_delete_item(HMENUI menu, unsigned long id)
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3497 {
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3498 char numbuf[11];
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3499 GtkWidget *tmphandle;
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3500 int _locked_by_me = FALSE;
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3501 int ret = DW_ERROR_UNKNOWN;
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3502
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3503 if(!menu)
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3504 return ret;
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3505
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3506 DW_MUTEX_LOCK;
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3507 snprintf(numbuf, 10, "%lu", id);
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3508 tmphandle = _find_submenu_id(menu, numbuf);
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3509
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3510 if(tmphandle)
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3511 {
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3512 gtk_widget_destroy(tmphandle);
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3513 g_object_set_data(G_OBJECT(menu), numbuf, NULL);
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3514 ret = DW_ERROR_NONE;
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3515 }
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3516 DW_MUTEX_UNLOCK;
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3517 return ret;
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3518 }
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3519
bad3e17ab6e5 Implemented dw_menu_delete_item() for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1358
diff changeset
3520 /*
775
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 * 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
3522 * 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
3523 * 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
3524 * 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
3525 * 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
3526 * 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
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 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
3529 {
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 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
3531
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 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
3533 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
3534
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 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
3536
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 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
3538 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
3539 *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
3540 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
3541 }
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
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 * 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
3546 * 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
3547 * 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
3548 * 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
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 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
3551 {
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3552 GdkModifierType state = 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
3553 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
3554 int _locked_by_me = FALSE;
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3555 GdkDisplay *display;
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3556 GdkDeviceManager *manager;
775
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 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
3559 #ifdef GDK_WINDOWING_X11
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3560 display = gdk_display_get_default();
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3561 manager = gdk_display_get_device_manager(display);
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3562 gdk_window_get_device_position (gdk_x11_window_lookup_for_display(display, GDK_ROOT_WINDOW()),
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3563 gdk_device_manager_get_client_pointer(manager), &gx, &gy, &state);
775
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 #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
3565 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
3566 *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
3567 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
3568 *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
3569 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
3570 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3571
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 /*
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 * 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
3574 * 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
3575 * 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
3576 * 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
3577 */
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 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
3579 {
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 int _locked_by_me = FALSE;
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3581 GdkDisplay *display;
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3582 GdkDeviceManager *manager;
775
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
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 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
3585 #ifdef GDK_WINDOWING_X11
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3586 display = gdk_display_get_default();
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3587 manager = gdk_display_get_device_manager(display);
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3588 gdk_device_warp( gdk_device_manager_get_client_pointer(manager), gdk_screen_get_default(), 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
3589 #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
3590 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
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
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_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
3594 #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
3595 #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
3596
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 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
3598 {
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 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
3600
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 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
3602 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
3603 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
3604
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 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
3606 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
3607 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
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
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 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
3611 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3612 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
3613 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
3614 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
3615 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
3616 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
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 /*
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 * 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
3621 * 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
3622 * 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
3623 * 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
3624 */
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 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
3626 {
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 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
3628 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
3629
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 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
3631 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
3632 {
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 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
3634 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
3635 }
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
3636 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
3637 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
3638 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
3639 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
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 /*
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 * 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
3644 * 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
3645 * 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
3646 * 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
3647 */
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 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
3649 {
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 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
3651 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
3652 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
3653 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
3654 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
3655 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
3656
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 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
3658 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
3659 {
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 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
3661 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
3662 }
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 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
3664 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
3665 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
3666 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
3667 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
3668
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 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
3670 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
3671 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
3672 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
3673 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
3674 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
3675
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_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
3677 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
3678 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
3679
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 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
3681 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
3682 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
3683
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3684 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3685 dw_window_set_font(tmp, _DWDefaultFont);
775
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 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
3687 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
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
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
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 /*
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 * 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
3693 * 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
3694 * 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
3695 * 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
3696 */
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 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
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 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
3700 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
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 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
3703 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
3704
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 /* 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
3706 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
3707 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
3708 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
3709 gtk_misc_set_alignment(GTK_MISC(tmp), DW_LEFT, DW_LEFT);
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3710 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3711 dw_window_set_font(tmp, _DWDefaultFont);
775
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 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
3713 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
3714 }
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
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 * 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
3718 * 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
3719 * 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
3720 * 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
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 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
3723 {
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 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
3725 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
3726
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 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
3728 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
3729 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
3730 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
3731 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
3732 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
3733 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
3734
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 /* 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
3736 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
3737 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
3738 g_object_set_data(G_OBJECT(frame), "_dw_label", (gpointer)tmp);
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3739 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3740 dw_window_set_font(tmp, _DWDefaultFont);
775
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 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
3742 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
3743 }
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3745 /*
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 * 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
3747 * 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
3748 * 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
3749 */
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 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
3751 {
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
3752 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
3753 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
3754
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 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
3756 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
3757 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
3758 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
3759 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
3760 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
3761 gtk_container_add (GTK_CONTAINER(tmpbox), tmp);
1545
6edf3fce77f2 Initial support for container and MLE auto-sizing on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1539
diff changeset
3762 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), GTK_WRAP_WORD);
775
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 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
3765 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
3766 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
3767 gtk_widget_show(tmpbox);
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3768 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3769 dw_window_set_font(tmpbox, _DWDefaultFont);
775
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 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
3771 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
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
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 /*
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 * 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
3776 * 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
3777 * 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
3778 * 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
3779 */
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 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
3781 {
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 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
3783 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
3784
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 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
3786 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
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 gtk_entry_set_text(GTK_ENTRY(tmp), text);
1352
08de3c1f4ae4 Fix entryfields, comboboxes etc being too wide in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1330
diff changeset
3789 gtk_entry_set_width_chars(GTK_ENTRY(tmp), 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
3790
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 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
3792 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
3793
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3794 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3795 dw_window_set_font(tmp, _DWDefaultFont);
775
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 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
3797 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
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
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 /*
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 * 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
3802 * 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
3803 * 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
3804 * 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
3805 */
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 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
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 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
3809 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
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 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
3812 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
3813
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 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
3815 gtk_entry_set_text(GTK_ENTRY(tmp), text);
1352
08de3c1f4ae4 Fix entryfields, comboboxes etc being too wide in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1330
diff changeset
3816 gtk_entry_set_width_chars(GTK_ENTRY(tmp), 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
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 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
3819 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
3820
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3821 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3822 dw_window_set_font(tmp, _DWDefaultFont);
775
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 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
3824 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
3825 }
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3827 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3828 * 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
3829 * 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
3830 * 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
3831 * 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
3832 */
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 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
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 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
3836 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
3837 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
3838
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 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
3840 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
3841 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
3842 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
3843 gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(tmp))), text);
1352
08de3c1f4ae4 Fix entryfields, comboboxes etc being too wide in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1330
diff changeset
3844 gtk_entry_set_width_chars(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(tmp))), 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
3845 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
3846 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
3847 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3848 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3849 dw_window_set_font(tmp, _DWDefaultFont);
775
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 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
3851 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
3852 }
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 * 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
3856 * 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
3857 * 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
3858 * 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
3859 */
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 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
3861 {
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 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
3863 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
3864
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 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
3866 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
3867 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
3868 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3869 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
3870 dw_window_set_font(tmp, _DWDefaultFont);
775
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 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
3872 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
3873 }
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3875 /*
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 * 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
3877 * 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
3878 * 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
3879 * 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
3880 */
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 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
3882 {
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 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
3884 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
3885 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
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 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
3888 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
3889 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
3890
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 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
3892 {
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 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
3894 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
3895 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
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 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
3898 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
3899 {
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 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
3901 }
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 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
3903 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
3904 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
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
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 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
3909 * 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
3910 * 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
3911 * 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
3912 * 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
3913 * 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
3914 * 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
3915 * (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
3916 */
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 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
3918 {
1830
6b90c7e9e520 Attempt at fixing GTK 2.x issue with dw_window_set_bitmap() when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1823
diff changeset
3919 GtkWidget *tmp;
1831
ce7543633fef Slight typo in that last commit fixed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1830
diff changeset
3920 GtkWidget *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
3921 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
3922
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 DW_MUTEX_LOCK;
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
3924 /* Create a new button */
1830
6b90c7e9e520 Attempt at fixing GTK 2.x issue with dw_window_set_bitmap() when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1823
diff changeset
3925 tmp = 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
3926 /* 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
3927 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
3928 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
3929 {
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 dw_window_set_bitmap( bitmap, 0, filename );
1830
6b90c7e9e520 Attempt at fixing GTK 2.x issue with dw_window_set_bitmap() when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1823
diff changeset
3931 gtk_container_add (GTK_CONTAINER(tmp), bitmap);
6b90c7e9e520 Attempt at fixing GTK 2.x issue with dw_window_set_bitmap() when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1823
diff changeset
3932 g_object_set_data(G_OBJECT(tmp), "_dw_bitmap", bitmap);
6b90c7e9e520 Attempt at fixing GTK 2.x issue with dw_window_set_bitmap() when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1823
diff changeset
3933 }
1832
cd4ff1eb34a3 Accidentally removed a very important line from GTK 3.x.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1831
diff changeset
3934 gtk_widget_show(tmp);
775
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 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
3936 {
1830
6b90c7e9e520 Attempt at fixing GTK 2.x issue with dw_window_set_bitmap() when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1823
diff changeset
3937 gtk_widget_set_tooltip_text(tmp, text);
6b90c7e9e520 Attempt at fixing GTK 2.x issue with dw_window_set_bitmap() when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1823
diff changeset
3938 }
6b90c7e9e520 Attempt at fixing GTK 2.x issue with dw_window_set_bitmap() when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1823
diff changeset
3939 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
6b90c7e9e520 Attempt at fixing GTK 2.x issue with dw_window_set_bitmap() when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1823
diff changeset
3940 DW_MUTEX_UNLOCK;
6b90c7e9e520 Attempt at fixing GTK 2.x issue with dw_window_set_bitmap() when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1823
diff changeset
3941 return tmp;
775
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 }
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
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 * 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
3946 * 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
3947 * 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
3948 * 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
3949 * 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
3950 * (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
3951 * 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
3952 */
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 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
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 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
3956 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
3957 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
3958
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 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
3960 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
3961 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
3962
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 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
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 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
3966 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
3967 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
3968 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3969 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
3970 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
3971 {
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 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
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 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
3975 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
3976 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
3977 }
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
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 * 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
3981 * 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
3982 * 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
3983 * 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
3984 */
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 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
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 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
3988 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
3989 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
3990
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 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
3992 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
3993 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
3994 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
3995 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
3996 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
3997 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
3998 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
3999 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
4000 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
4001 dw_window_set_font(tmp, _DWDefaultFont);
775
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
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
4023 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
4024 dw_window_set_font(tmp, _DWDefaultFont);
775
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 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
4026 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
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
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 /*
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 * 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
4031 * 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
4032 * 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
4033 * 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
4034 * 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
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 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
4037 {
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 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
4039 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
4040 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
4041
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 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
4043 adjustment = (GtkAdjustment *)gtk_adjustment_new(0, 0, (gfloat)increments, 1, 1, 1);
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
4044 tmp = gtk_scale_new(vertical ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, adjustment);
775
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 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
4046 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
4047 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
4048 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
4049 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
4050 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
4051 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
4052 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
4053 }
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
1793
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4055 #ifdef HAVE_OVERLAY_SCROLLBARS
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4056 gboolean ubuntu_overlay_scrollbar_get_enabled(void);
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4057 void ubuntu_overlay_scrollbar_set_enabled(gboolean enabled);
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4058 #endif
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4059
775
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 /*
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 * 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
4062 * 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
4063 * 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
4064 * 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
4065 * 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
4066 */
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 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
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 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
4070 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
4071 int _locked_by_me = FALSE;
1793
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4072 #ifdef HAVE_OVERLAY_SCROLLBARS
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4073 gboolean overlaysb;
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4074 #endif
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4075
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4076 DW_MUTEX_LOCK;
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4077 #ifdef HAVE_OVERLAY_SCROLLBARS
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4078 overlaysb = ubuntu_overlay_scrollbar_get_enabled();
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4079 ubuntu_overlay_scrollbar_set_enabled(FALSE);
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4080 #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
4081 adjustment = (GtkAdjustment *)gtk_adjustment_new(0, 0, 0, 1, 1, 1);
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
4082 tmp = gtk_scrollbar_new(vertical ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, adjustment);
1793
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4083 #ifdef HAVE_OVERLAY_SCROLLBARS
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4084 ubuntu_overlay_scrollbar_set_enabled(overlaysb);
2cfbfccbbafe Added code to disable Ubuntu overlay scrollbars
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1785
diff changeset
4085 #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
4086 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
4087 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
4088 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
4089 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
4090 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
4091 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
4092 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
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
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 /*
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 * 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
4097 * 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
4098 * 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
4099 */
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 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
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 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
4103 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
4104
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 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
4106 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
4107 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
4108 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
4109 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
4110 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
4111 }
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 /*
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 * 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
4115 * 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
4116 * 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
4117 * 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
4118 */
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 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
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 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
4122 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
4123
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 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
4125 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
4126 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
4127 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
4128 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
4129 dw_window_set_font(tmp, _DWDefaultFont);
775
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 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
4131 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
4132 }
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
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 /*
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 * 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
4136 * 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
4137 * 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
4138 * 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
4139 */
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 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
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 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
4143 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
4144 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
4145 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
4146 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
4147 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
4148
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 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
4150 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
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 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
4153 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
4154 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4155 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
4156 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
4157 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
4158 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
4159
775
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 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
4161 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
4162 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
4163 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
4164
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4165 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
4166 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
4167 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
4168
775
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 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
4170 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
4171 {
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 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
4173 }
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 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
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 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
4177 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
4178 gtk_widget_show(tree);
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
4179 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
4180 dw_window_set_font(tmp, _DWDefaultFont);
775
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_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
4182 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
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
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 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4186 * 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
4187 * 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
4188 * 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
4189 * 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
4190 */
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 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
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 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
4194 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
4195
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 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
4197 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
4198
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 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
4200 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
4201 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
4202 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
4203 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
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 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
4206 }
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
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 /*
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 * 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
4210 * 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
4211 * 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
4212 * 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
4213 * (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
4214 * 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
4215 * 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
4216 * 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
4217 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4218 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
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 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
4221 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
4222 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
4223 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
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 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
4226 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
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 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
4229 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
4230 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
4231 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
4232 {
1258
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
4233 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
4234
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 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
4236 {
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 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
4238 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
4239 }
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 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
4242
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 /* 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
4244 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
4245 {
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 /* 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
4247 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
4248 {
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 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
4250 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
4251 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
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 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
4254 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
4255 }
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 }
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 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
4258 {
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 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
4260 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
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 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
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 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
4267 {
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 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
4269 {
1823
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4270 GtkWidget *pixmap = (GtkWidget *)g_object_get_data( G_OBJECT(handle), "_dw_bitmap" );
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4271 if(pixmap)
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4272 {
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4273 gtk_image_set_from_pixbuf(GTK_IMAGE(pixmap), tmp);
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4274 }
775
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 }
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 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
4277 {
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 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
4279 }
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 }
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 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
4282 }
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 /*
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 * 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
4286 * 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
4287 * 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
4288 * 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
4289 * (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
4290 * 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
4291 * 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
4292 * 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
4293 * 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
4294 */
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 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
4296 {
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
4297 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
4298 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
4299 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
4300 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
4301
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 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
4303 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
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 DW_MUTEX_LOCK;
1718
fae374a0055b Same fix for GTK2/3 as committed for OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
4306 if(data)
fae374a0055b Same fix for GTK2/3 as committed for OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
4307 {
775
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 /*
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 * 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
4310 * 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
4311 */
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 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
4313 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
4314 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
4315 {
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 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
4317 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
4318 }
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 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
4320 {
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 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
4322 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
4323 }
1097
8e9db23a8c31 Fixed icons from data by merging tmp and pixbuf together in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1096
diff changeset
4324 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
4325 /* 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
4326 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
4327 }
1718
fae374a0055b Same fix for GTK2/3 as committed for OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
4328 else if (id)
fae374a0055b Same fix for GTK2/3 as committed for OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
4329 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
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 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
4332 {
1823
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4333 if ( GTK_IS_BUTTON(handle) )
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4334 {
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4335 GtkWidget *pixmap = (GtkWidget *)g_object_get_data( G_OBJECT(handle), "_dw_bitmap" );
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4336 if(pixmap)
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4337 {
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4338 gtk_image_set_from_pixbuf(GTK_IMAGE(pixmap), tmp);
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4339 }
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4340 }
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4341 else
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4342 {
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4343 gtk_image_set_from_pixbuf(GTK_IMAGE(handle), tmp);
9c77567c5b2d Fixed broken support in dw_window_set_bitmap() on GTK2/3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1796
diff changeset
4344 }
775
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 }
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 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
4347 }
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 /*
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 * 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
4351 * 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
4352 * 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
4353 * 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
4354 */
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 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
4356 {
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 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
4358 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
4359
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 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
4361 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
4362 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
4363 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
4364 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
4365 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
4366 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
4367 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
4368 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
4369 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
4370 {
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 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
4372 }
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 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
4374 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
4375 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
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 /*
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 * 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
4379 */
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 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
4381 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
4382 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
4383 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
4384 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
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 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
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
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 /*
1389
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4390 * Sets the text used for a given window's floating bubble help.
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4391 * Parameters:
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4392 * handle: Handle to the window (widget).
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4393 * bubbletext: The text in the floating bubble tooltip.
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4394 */
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4395 void API dw_window_set_tooltip(HWND handle, char *bubbletext)
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4396 {
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4397 int _locked_by_me = FALSE;
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4398
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4399 DW_MUTEX_LOCK;
1400
ccd383e11ff8 Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1390
diff changeset
4400 if(bubbletext && *bubbletext)
ccd383e11ff8 Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1390
diff changeset
4401 gtk_widget_set_tooltip_text(handle, bubbletext);
ccd383e11ff8 Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1390
diff changeset
4402 else
ccd383e11ff8 Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1390
diff changeset
4403 gtk_widget_set_has_tooltip(handle, FALSE);
1389
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4404 DW_MUTEX_UNLOCK;
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4405 }
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4406
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1388
diff changeset
4407 /*
775
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 * 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
4409 * 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
4410 * 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
4411 * 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
4412 * 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
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 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
4415 {
1742
cebf830e3da7 Minor GTK3 code cleanups from attempt at fixing combobox event order.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1718
diff changeset
4416 const char *possible = 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
4417 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
4418
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 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
4420 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
4421 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
4422 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
4423 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
4424
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 DW_MUTEX_UNLOCK;
1742
cebf830e3da7 Minor GTK3 code cleanups from attempt at fixing combobox event order.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1718
diff changeset
4426 return strdup(possible ? possible : "");
775
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 }
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 /*
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 * 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
4431 * 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
4432 * 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
4433 */
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 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
4435 {
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 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
4437
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 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
4439 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
4440 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
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 /*
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 * 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
4445 * 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
4446 * 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
4447 */
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 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
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 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
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 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
4453 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
4454 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
4455 }
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
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 * 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
4459 * 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
4460 * 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
4461 * 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
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 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
4464 {
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 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
4466 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
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 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
4469 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
4470 {
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 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
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 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
4474 {
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 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
4476 {
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
4477 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
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 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
4480 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
4481 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
4482 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
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 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
4486 }
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 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
4488 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
4489 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
4490 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
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
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 * 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
4495 * 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
4496 * 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
4497 * 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
4498 * 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
4499 */
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 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
4501 {
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 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
4503 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
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 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
4506 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
4507 {
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 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
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 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
4511 {
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 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
4513 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
4514
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 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
4516 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
4517 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
4518 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
4519 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
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 }
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 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
4523 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
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
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 /*
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 * 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
4528 * 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
4529 * 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
4530 * 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
4531 * 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
4532 * 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
4533 */
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 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
4535 {
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 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
4537 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
4538
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 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
4540 /* 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
4541 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
4542 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
4543 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
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 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
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 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
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 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
4550 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
4551
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4552 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
4553 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
4554 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
4555 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
4556 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
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 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
4559 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
4560 }
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 }
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 }
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 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
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
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 * 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
4568 * 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
4569 * 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
4570 * 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
4571 * 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
4572 */
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 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
4574 {
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 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
4576
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 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
4578 *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
4579 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
4580 *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
4581
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 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
4583 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
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 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
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 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
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 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
4590
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 if(bytes)
998
f019c5e8511f Fixed GTK reporting wrong character and line counts. 1000 revisions!!!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 994
diff changeset
4592 *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
4593 if(lines)
998
f019c5e8511f Fixed GTK reporting wrong character and line counts. 1000 revisions!!!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 994
diff changeset
4594 *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
4595 }
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_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
4598 }
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 /*
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 * 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
4602 * 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
4603 * 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
4604 * 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
4605 * 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
4606 */
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 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
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 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
4610
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 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
4612 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
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 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
4615
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 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
4617 {
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 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
4619 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
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 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
4622 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
4623 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
4624 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
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 }
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 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
4628 }
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 /*
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 * 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
4632 * 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
4633 * 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
4634 */
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 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
4636 {
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 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
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 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
4640 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
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 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
4643
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 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
4645 {
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 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
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 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
4649 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
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 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
4653 }
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
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 /*
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 * 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
4657 * 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
4658 * 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
4659 * 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
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 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
4662 {
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 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
4664
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 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
4666 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
4667 {
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 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
4669
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 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
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 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
4673 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
4674 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
4675
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 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
4677 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
4678 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
4679 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
4680 {
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 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
4682 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
4683 }
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 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
4685 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
4686 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
4687 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
4688 }
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 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
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.
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 * 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
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_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
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 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
4710 }
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 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
4712 }
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 /*
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 * 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
4716 * 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
4717 * 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
4718 * 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
4719 */
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 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
4721 {
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 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
4723
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 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
4725 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
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 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
4728
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 if(tmp && GTK_IS_TEXT_VIEW(tmp))
1545
6edf3fce77f2 Initial support for container and MLE auto-sizing on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1539
diff changeset
4730 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), state ? GTK_WRAP_WORD : GTK_WRAP_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
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 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
4733 }
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
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 /*
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 * 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
4737 * 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
4738 * 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
4739 * 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
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 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
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 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
4744
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 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
4746 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
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 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
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 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
4751 {
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 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
4753 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
4754 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
4755
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 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
4757 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
4758 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
4759 {
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 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
4761 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
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 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
4764 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
4765 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
4766 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
4767 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
4768 }
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 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
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 /*
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 * 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
4775 * 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
4776 * 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
4777 * 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
4778 * 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
4779 * 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
4780 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4781 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
4782 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4783 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
4784
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4785 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
4786 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
4787 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4788 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
4789
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4790 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
4791 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4792 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
4793 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
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 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
4796 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
4797 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
4798 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
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 }
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 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
4802 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
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4805 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4806 * 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
4807 * 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
4808 * 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
4809 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4810 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
4811 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4812 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4813
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4814 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4815 * 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
4816 * 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
4817 * 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
4818 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4819 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
4820 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4821 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4822
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
4823 /* 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
4824 * 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
4825 */
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
4826 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
4827 {
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
4828 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
4829 {
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
4830 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
4831 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
4832 }
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
4833 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
4834 }
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
4835
775
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 /*
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 * 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
4838 * 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
4839 * 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
4840 * 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
4841 */
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 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
4843 {
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 _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
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 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
4847 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
4848 {
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
4849 /* 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
4850 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
4851 {
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
4852 /* 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
4853 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
4854 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
4855 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
4856 }
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
4857 }
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
4858 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
4859 {
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
4860 /* 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
4861 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
4862 /* 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
4863 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
4864 }
775
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 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
4866 }
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
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 * 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
4870 * 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
4871 * 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
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 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
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 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
4876 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
4877
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 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
4879 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
4880
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 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
4882 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
4883 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
4884 {
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 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
4886 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
4887
1583
525c4c9d04c6 After switching to non-deprecated functions in GTK3 like...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1579
diff changeset
4888 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(handle)) == GTK_ORIENTATION_VERTICAL)
775
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 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
4890 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
4891 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
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 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
4894 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
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
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 /*
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 * 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
4899 * 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
4900 * 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
4901 * 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
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 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
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 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
4906 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
4907
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 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
4909 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
4910
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 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
4912 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
4913 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
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 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
4916
1583
525c4c9d04c6 After switching to non-deprecated functions in GTK3 like...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1579
diff changeset
4917 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(handle)) == GTK_ORIENTATION_VERTICAL)
775
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 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
4919 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
4920 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
4921 }
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 * 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
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 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
4929 */
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 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
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 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
4933 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
4934
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 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
4936 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
4937
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 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
4939 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
4940 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
4941 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
4942 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
4943 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
4944 }
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
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 /*
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 * 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
4948 * 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
4949 * 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
4950 * 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
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 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
4953 {
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 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
4955 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
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 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
4958 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
4959
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 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
4961 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
4962 if(adjustment)
1486
5cfbf2715eec Code simplification on GTK2 and ported the fix to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1482
diff changeset
4963 {
5cfbf2715eec Code simplification on GTK2 and ported the fix to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1482
diff changeset
4964 g_object_set_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event", GINT_TO_POINTER(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
4965 gtk_adjustment_set_value(adjustment, (gfloat)position);
1486
5cfbf2715eec Code simplification on GTK2 and ported the fix to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1482
diff changeset
4966 g_object_set_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event", GINT_TO_POINTER(0));
5cfbf2715eec Code simplification on GTK2 and ported the fix to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1482
diff changeset
4967 }
775
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 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
4969 }
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
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 /*
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 * 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
4973 * 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
4974 * 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
4975 * 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
4976 * 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
4977 */
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 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
4979 {
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 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
4981 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
4982
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 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
4984 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
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 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
4987 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
4988 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
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 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
4991 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
4992 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
4993 }
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 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
4995 }
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 /*
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 * 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
4999 * 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
5000 * 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
5001 * 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
5002 */
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 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
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 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
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 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
5008 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
5009 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
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
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 * 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
5014 * 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
5015 * 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
5016 * 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
5017 * 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
5018 */
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 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
5020 {
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 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
5022 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
5023 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
5024
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 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
5026 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
5027 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
5028 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
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 * 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
5031 */
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 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
5033 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
5034 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
5035 }
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 /*
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 * 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
5039 * 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
5040 * 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
5041 * 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
5042 */
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 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
5044 {
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 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
5046
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 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
5048 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
5049 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
5050 }
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
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 /*
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 * 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
5054 * 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
5055 * 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
5056 */
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 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
5058 {
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 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
5060 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
5061
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 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
5063 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
5064 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
5065
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 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
5067 }
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
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 /*
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 * 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
5071 * 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
5072 * 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
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 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
5075 {
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 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
5077 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
5078
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 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
5080 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
5081 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
5082
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 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
5084 }
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 /*
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 * 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
5088 * 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
5089 * 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
5090 * 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
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 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
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 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
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 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
5097 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
5098 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
5099 }
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
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 /*
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 * 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
5103 * 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
5104 * 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
5105 * 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
5106 * 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
5107 * 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
5108 * 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
5109 * 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
5110 */
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 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
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 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
5114 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
5115 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
5116 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
5117 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
5118 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
5119
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 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
5121 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
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 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
5124 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
5125 && 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
5126 (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
5127 {
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 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
5129
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 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
5131
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 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
5133 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
5134 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
5135 }
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 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
5137
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 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
5139 }
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
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 * 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
5143 * 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
5144 * 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
5145 * 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
5146 * 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
5147 * 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
5148 * 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
5149 */
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 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
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 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
5153 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
5154 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
5155 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
5156 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
5157 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
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 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
5160 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
5161
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 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
5163 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
5164 && 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
5165 (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
5166 {
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 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
5168
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 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
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 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
5172 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
5173 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
5174 }
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 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
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 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
5178 }
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 /*
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 * 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
5182 * 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
5183 * 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
5184 * 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
5185 * 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
5186 * 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
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 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
5189 {
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 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
5191 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
5192 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
5193 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
5194
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 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
5196 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
5197
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 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
5199 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
5200 && 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
5201 (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
5202 {
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 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
5204
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 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
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 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
5208 }
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
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 /*
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 * 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
5212 * 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
5213 * 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
5214 * 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
5215 * 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
5216 */
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 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
5218 {
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 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
5220 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
5221 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
5222
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 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
5224 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
5225
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 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
5227 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
5228 && 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
5229 (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
5230 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
5231 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
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
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 /*
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 * 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
5236 * 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
5237 * 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
5238 * 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
5239 */
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 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
5241 {
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 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
5243 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
5244 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
5245 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
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 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
5248 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
5249
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 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
5251 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
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 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
5254 (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
5255 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
5256 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
5257 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
5258 }
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 /*
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 * 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
5262 * 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
5263 * 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
5264 * 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
5265 */
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 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
5267 {
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 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
5269 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
5270 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
5271 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
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 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
5274 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
5275
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 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
5277 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
5278
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 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
5280 (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
5281 {
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 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
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(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
5285 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
5286 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
5287 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
5288 }
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 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
5290 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
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
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 /*
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 * 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
5295 * 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
5296 * 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
5297 * 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
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 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
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 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
5302 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
5303 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
5304 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
5305
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 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
5307 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
5308
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 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
5310 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
5311 && 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
5312 (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
5313 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
5314 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
5315 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
5316 }
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 * 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
5320 * 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
5321 * 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
5322 * 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
5323 */
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 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
5325 {
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 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
5327 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
5328 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
5329
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 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
5331 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
5332
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 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
5334 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
5335 && 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
5336 (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
5337 {
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 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
5339 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
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 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
5342 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
5343 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
5344 }
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 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
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
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 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
5349 {
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 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
5351 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
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 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
5354 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
5355 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
5356 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
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 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
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 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
5361 _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
5362 } 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
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 }
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
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 * 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
5368 * 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
5369 * 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
5370 */
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 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
5372 {
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 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
5374 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
5375 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
5376
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 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
5378 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
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 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
5381 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
5382 && 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
5383 (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
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 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
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 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
5388 {
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 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
5390 _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
5391 } 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
5392 }
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 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
5394 }
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 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
5396 }
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
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 * 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
5400 * 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
5401 * 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
5402 * 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
5403 */
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 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
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 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
5407 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
5408 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
5409
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 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
5411 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
5412
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 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
5414 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
5415 && 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
5416 (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
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 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
5419 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
5420 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
5421 }
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 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
5423 }
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
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 * 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
5427 * 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
5428 * 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
5429 * 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
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 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
5432 {
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 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
5434 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
5435 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
5436
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 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
5438 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
5439
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 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
5441 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
5442 && 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
5443 (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
5444 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5445 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
5446 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
5447 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
5448 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5449 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
5450 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5451
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 /*
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 * 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
5454 * 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
5455 * 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
5456 * 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
5457 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5458 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
5459 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5460 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
5461 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
5462 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
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 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
5465 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
5466
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 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
5468 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
5469 && 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
5470 (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
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 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
5473 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
5474 }
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 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
5476 }
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5478 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
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 int z;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
5481 char numbuf[21];
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5482 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
5483 GtkListStore *store;
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
5484 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
5485 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
5486 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
5487 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
5488 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
5489
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
5490 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
5491 /* 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
5492 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
5493 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
5494
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
5495 /* 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
5496 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
5497 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
5498 /* 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
5499 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
5500 {
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
5501 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
5502 {
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 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
5504 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
5505 }
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 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
5507 {
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
5508 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
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 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
5511 {
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 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
5513 }
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 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
5515 {
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
5516 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
5517 }
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 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
5519 {
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
5520 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
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_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
5523 {
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
5524 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
5525 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5526 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5527 /* 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
5528 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
5529 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
5530 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
5531 /* 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
5532 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
5533 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
5534 snprintf(numbuf, 20, "_dw_cont_col%d", 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
5535 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
5536 col = gtk_tree_view_column_new();
884
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5537 rend = NULL;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5538
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
5539 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
5540 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5541 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
5542 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
5543 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
5544 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
5545 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
5546 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
5547 }
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
5548 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
5549 {
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
5550 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
5551 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
5552 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
5553 }
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 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
5555 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5556 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
5557 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
5558 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
5559 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
5560 }
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 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
5562 {
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 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
5564 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
5565 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
5566 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
5567 }
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 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
5569 {
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 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
5571 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
5572 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
5573 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
5574 }
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 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
5576 {
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 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
5578 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
5579 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
5580 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
5581 }
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
5582 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
5583 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
5584 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
5585 if(flags[z] & DW_CFA_RIGHT)
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5586 {
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5587 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
5588 if(rend)
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5589 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
5590 }
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5591 else if(flags[z] & DW_CFA_CENTER)
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5592 {
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5593 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
5594 if(rend)
0f99520041c4 Implemented container column alignment on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 883
diff changeset
5595 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
5596 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5597 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
5598 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5599 /* 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
5600 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
5601 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
5602 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
5603 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
5604 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
5605 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5606 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
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 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
5609 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5610 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
5611 }
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
5612 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
5613 free(array);
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
5614 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
5615 dw_window_set_font(handle, _DWDefaultFont);
775
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 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
5617 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
5618 }
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
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 * 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
5622 * 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
5623 * 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
5624 * 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
5625 * 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
5626 * 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
5627 * 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
5628 * (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
5629 */
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 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
5631 {
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 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
5633 }
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 /*
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5636 * Configures the main filesystem columnn title for localization.
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5637 * Parameters:
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5638 * handle: Handle to the container to be configured.
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5639 * title: The title to be displayed in the main column.
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5640 */
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5641 void API dw_filesystem_set_column_title(HWND handle, char *title)
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5642 {
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5643 char *newtitle = strdup(title ? title : "");
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5644
1745
7dd1659c2693 Fixes for the new localization function on OS/2 and GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
5645 g_object_set_data(G_OBJECT(handle), "_dw_coltitle", newtitle);
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5646 }
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5647
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5648 /*
775
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 * 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
5650 * 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
5651 * 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
5652 * 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
5653 * 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
5654 * 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
5655 */
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 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
5657 {
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
5658 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
5659 unsigned long *newflags = malloc(sizeof(unsigned long) * (count + 1));
1745
7dd1659c2693 Fixes for the new localization function on OS/2 and GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
5660 char *coltitle = (char *)g_object_get_data(G_OBJECT(handle), "_dw_coltitle");
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5661
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5662 newtitles[0] = coltitle ? coltitle : "Filename";
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
5663 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
5664
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
5665 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
5666 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
5667
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
5668 _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
5669
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5670 if(coltitle)
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5671 {
1745
7dd1659c2693 Fixes for the new localization function on OS/2 and GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
5672 g_object_set_data(G_OBJECT(handle), "_dw_coltitle", NULL);
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5673 free(coltitle);
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1742
diff changeset
5674 }
775
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 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
5676 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
5677 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
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
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 /*
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 * 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
5682 * 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
5683 * 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
5684 * 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
5685 * 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
5686 * 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
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 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
5689 {
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5690 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
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
1706
fb6807b0ab0d Limit the size of an HICN to 24x24 on GTK... icons are used for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
5693 /* Internal function to keep HICNs from getting too big */
fb6807b0ab0d Limit the size of an HICN to 24x24 on GTK... icons are used for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
5694 GdkPixbuf *_icon_resize(GdkPixbuf *ret)
fb6807b0ab0d Limit the size of an HICN to 24x24 on GTK... icons are used for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
5695 {
1709
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1706
diff changeset
5696 if(ret)
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1706
diff changeset
5697 {
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1706
diff changeset
5698 int pwidth = gdk_pixbuf_get_width(ret);
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1706
diff changeset
5699 int pheight = gdk_pixbuf_get_height(ret);
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1706
diff changeset
5700
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1706
diff changeset
5701 if(pwidth > 24 || pheight > 24)
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1706
diff changeset
5702 {
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1706
diff changeset
5703 GdkPixbuf *orig = ret;
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1706
diff changeset
5704 ret = gdk_pixbuf_scale_simple(ret, pwidth > 24 ? 24 : pwidth, pheight > 24 ? 24 : pheight, GDK_INTERP_BILINEAR);
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1706
diff changeset
5705 g_object_unref(G_OBJECT(orig));
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1706
diff changeset
5706 }
1706
fb6807b0ab0d Limit the size of an HICN to 24x24 on GTK... icons are used for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
5707 }
fb6807b0ab0d Limit the size of an HICN to 24x24 on GTK... icons are used for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
5708 return ret;
fb6807b0ab0d Limit the size of an HICN to 24x24 on GTK... icons are used for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
5709 }
fb6807b0ab0d Limit the size of an HICN to 24x24 on GTK... icons are used for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
5710
775
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 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5712 * 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
5713 * 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
5714 * 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
5715 * 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
5716 * (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
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 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
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 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
5721 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
5722 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
5723 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
5724
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 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
5726 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
5727
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5728 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
5729
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5730 /* 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
5731 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
5732 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5733 /* 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
5734 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
5735 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5736 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
5737 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
5738 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
5739 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5740 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
5741 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
5742 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5743 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5744 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
5745 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5746 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
5747 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5748 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5749
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5750 DW_MUTEX_LOCK;
1706
fb6807b0ab0d Limit the size of an HICN to 24x24 on GTK... icons are used for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
5751 ret = _icon_resize(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
5752 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
5753 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
5754 }
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 * 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
5758 * 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
5759 * 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
5760 * 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
5761 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5762 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
5763 {
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 _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
5765 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
5766 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
5767 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
5768
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5769 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5770 * 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
5771 * 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
5772 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5773 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
5774 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
5775 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
5776 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5777 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
5778 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
5779 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5780 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
5781 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5782 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
5783 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5784 DW_MUTEX_LOCK;
1706
fb6807b0ab0d Limit the size of an HICN to 24x24 on GTK... icons are used for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
5785 ret = _icon_resize(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
5786 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
5787 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
5788 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5789
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5790 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5791 * 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
5792 * 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
5793 * 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
5794 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5795 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
5796 {
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
5797 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
5798
976
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5799 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
5800 {
ab244c6f9386 Changed HICN to be a pointer type and simplified the icon code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 972
diff changeset
5801 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
5802 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5803 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5804
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5805 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5806 * 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
5807 * 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
5808 * 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
5809 * 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
5810 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5811 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
5812 {
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5813 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
5814 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
5815 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
5816 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
5817
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5818 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
5819 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
5820
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5821 /* 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
5822 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
5823 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
5824
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5825 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
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 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5828
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
5829 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
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 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
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 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
5834 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5835 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
5836 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
5837 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5838 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
5839 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
5840 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5841
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5842 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5843 * 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
5844 * 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
5845 */
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5846 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
5847 {
1501
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5848 char numbuf[21], textbuffer[101] = {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
5849 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
5850 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
5851 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
5852 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
5853
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5854 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
5855 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
5856
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5857 /* 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
5858 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
5859 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
5860
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5861 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
5862 {
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5863 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
5864
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
5865 snprintf(numbuf, 20, "_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
5866 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
5867 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
5868 {
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
5869 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
5870 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5871
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5872 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
5873 {
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
5874 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
5875 {
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
5876 void **thisdata = (void **)data;
1501
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5877 HICN hicon = data ? *((HICN *)thisdata[0]) : 0;
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5878 char *tmp = data ? (char *)thisdata[1] : NULL;
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5879 GdkPixbuf *pixbuf = hicon ? _find_pixbuf(hicon, NULL, NULL) : NULL;
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
5880
1287
57ce07fbec45 Allow passing 0 as icon handle to remove container icon on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1283
diff changeset
5881 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
5882 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
5883 }
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
5884 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
5885 {
1501
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5886 HICN hicon = data ? *((HICN *)data) : 0;
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5887 GdkPixbuf *pixbuf = hicon ? _find_pixbuf(hicon, NULL, NULL) : NULL;
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5888
1287
57ce07fbec45 Allow passing 0 as icon handle to remove container icon on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1283
diff changeset
5889 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
5890 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5891 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
5892 {
1501
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5893 char *tmp = data ? *((char **)data) : NULL;
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
5894 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
5895 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5896 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
5897 {
1501
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5898 ULONG tmp = data ? *((ULONG *)data): 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
5899
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
5900 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
5901 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5902 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
5903 {
1501
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5904 if(data)
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5905 {
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5906 struct tm curtm;
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5907 CDATE cdate = *((CDATE *)data);
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5908
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5909 memset( &curtm, 0, sizeof(curtm) );
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5910 curtm.tm_mday = cdate.day;
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5911 curtm.tm_mon = cdate.month - 1;
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5912 curtm.tm_year = cdate.year - 1900;
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5913
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5914 strftime(textbuffer, 100, "%x", &curtm);
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5915 }
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
5916 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
5917 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5918 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
5919 {
1501
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5920 if(data)
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5921 {
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5922 struct tm curtm;
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5923 CTIME ctime = *((CTIME *)data);
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5924
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5925 memset( &curtm, 0, sizeof(curtm) );
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5926 curtm.tm_hour = ctime.hours;
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5927 curtm.tm_min = ctime.minutes;
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5928 curtm.tm_sec = ctime.seconds;
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5929
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5930 strftime(textbuffer, 100, "%X", &curtm);
7060e258e383 Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1499
diff changeset
5931 }
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
5932 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
5933 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5934 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5935 }
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5936 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
5937 }
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
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 * 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
5941 * 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
5942 * 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
5943 * 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
5944 * 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
5945 * 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
5946 * 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
5947 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5948 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
5949 {
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
5950 _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
5951 }
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
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 * 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
5955 * 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
5956 * 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
5957 * 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
5958 * 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
5959 * 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
5960 */
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 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
5962 {
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
5963 _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
5964 }
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
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 /*
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 * 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
5968 * 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
5969 * 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
5970 * 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
5971 * 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
5972 * 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
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 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
5975 {
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 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
5977 }
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
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 * 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
5981 * 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
5982 * 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
5983 * 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
5984 * 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
5985 * 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
5986 * 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
5987 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5988 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
5989 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5990 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
5991 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5992
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5993 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5994 * 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
5995 * 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
5996 * 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
5997 * 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
5998 * 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
5999 * 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
6000 * 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
6001 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6002 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
6003 {
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
6004 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
6005
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
6006 _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
6007 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6008
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6009 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6010 * 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
6011 * 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
6012 * 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
6013 * 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
6014 * 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
6015 * 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
6016 * 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
6017 */
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 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
6019 {
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
6020 _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
6021 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6022
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6023 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6024 * 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
6025 * 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
6026 * 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
6027 * 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
6028 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6029 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
6030 {
781
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
6031 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
6032 int flag, rc = 0;
786
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
6033 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
6034 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
6035
df6091308b3f Have the basics of containers working now with the tree view widget.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 780
diff changeset
6036 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
6037 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
6038 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
6039 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6040 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
6041 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
6042 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6043
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
6044 snprintf(numbuf, 20, "_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
6045 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
6046
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6047 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
6048 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
6049 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
6050 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
6051 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
6052 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
6053 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
6054 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
6055 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
6056 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
6057 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
6058 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
6059 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
6060 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
6061 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6062
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6063 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6064 * 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
6065 * 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
6066 * 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
6067 * 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
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 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
6070 {
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
6071 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
6072 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6073
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6074 /*
1207
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6075 * 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
6076 * Parameters:
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6077 * handle: The window (widget) handle.
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6078 * 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
6079 * 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
6080 * 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
6081 * 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
6082 */
1291
b99b0b2c2826 Renamed dw_container_set_row_bg() to dw_container_set_stripe().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1289
diff changeset
6083 void API dw_container_set_stripe(HWND handle, unsigned long oddcolor, unsigned long evencolor)
1207
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6084 {
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6085 GtkWidget *cont;
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6086 int _locked_by_me = FALSE;
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6087 DW_MUTEX_LOCK;
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6088 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
6089
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6090 /* 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
6091 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
6092 {
1211
70dca53cb071 Updated GTK3 with the behavior change just commited for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1207
diff changeset
6093 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
6094 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
6095 else
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6096 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
6097 }
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6098 DW_MUTEX_UNLOCK;
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6099 }
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6100
423da07c8f05 Basic support for row colors on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1203
diff changeset
6101 /*
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6102 * 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
6103 * 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
6104 * 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
6105 * 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
6106 * 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
6107 */
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 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
6109 {
830
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6110 GtkWidget *cont;
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6111 int _locked_by_me = FALSE;
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6112
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6113 DW_MUTEX_LOCK;
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6114 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
6115
830
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6116 /* 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
6117 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
6118 {
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6119 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
6120
830
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6121 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
6122 {
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6123 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
6124 }
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6125 }
43e6282463fa Implemented dw_container_set_column_width().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 820
diff changeset
6126 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
6127 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6128
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
6129 /* 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
6130 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
6131 {
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
6132 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
6133 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
6134 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
6135
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6136 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
6137 /* 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
6138 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
6139 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
6140
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6141 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6142 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6143 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6144
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6145 if(pointer)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6146 {
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
6147 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
6148 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6149
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6150 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
6151 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6152 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
6153 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6154 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6155 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
6156 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6157
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6158 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6159 * 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
6160 * 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
6161 * 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
6162 * 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
6163 * 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
6164 */
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
6165 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
6166 {
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
6167 _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
6168 }
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
6169
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
6170 /*
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
6171 * 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
6172 * 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
6173 * 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
6174 * 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
6175 * 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
6176 */
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
6177 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
6178 {
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
6179 _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
6180 }
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
6181
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
6182 /*
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
6183 * 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
6184 * 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
6185 * 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
6186 * 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
6187 * 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
6188 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6189 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
6190 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6191 /* 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
6192 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6193
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6194 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6195 * 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
6196 * 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
6197 * 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
6198 * 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
6199 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6200 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
6201 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6202 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6203 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
6204 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
6205
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6206 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
6207 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
6208
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6209 /* 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
6210 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
6211 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
6212
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6213 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6214 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6215 GtkTreeIter iter;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6216 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
6217
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
6218 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
6219
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6220 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
6221 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6222 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
6223 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
6224 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6225
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6226 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
6227 rows = 0;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6228 else
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6229 rows -= rowcount;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6230
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6231 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
6232 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6233 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
6234 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6235
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6236 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6237 * 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
6238 * 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
6239 * 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
6240 * 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
6241 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6242 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
6243 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6244 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6245 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
6246 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
6247
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6248 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
6249 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
6250
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6251 /* 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
6252 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
6253 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
6254
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6255 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6256 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6257 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
6258 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
6259
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6260 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
6261 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6262 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
6263 }
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
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 /*
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 * 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
6267 * 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
6268 * 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
6269 * 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
6270 * 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
6271 * 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
6272 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6273 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
6274 {
861
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6275 GtkWidget *cont;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6276 int _locked_by_me = FALSE;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6277
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6278 DW_MUTEX_LOCK;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6279 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
6280
861
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6281 /* 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
6282 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
6283 {
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
6284 GtkAdjustment *adjust = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(cont));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6285
861
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6286 if(adjust)
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6287 {
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
6288 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
6289 gdouble currpos = gtk_adjustment_get_value(adjust);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6290 gdouble upper = gtk_adjustment_get_upper(adjust);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6291 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
6292 gdouble change;
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6293
861
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6294 /* Safety check */
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6295 if(rowcount < 1)
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6296 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6297 DW_MUTEX_UNLOCK;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6298 return;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6299 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6300
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6301 change = ((gdouble)rows/(gdouble)rowcount) * (upper - lower);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6302
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6303 switch(direction)
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6304 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6305 case DW_SCROLL_TOP:
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6306 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6307 gtk_adjustment_set_value(adjust, lower);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6308 break;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6309 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6310 case DW_SCROLL_BOTTOM:
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6311 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6312 gtk_adjustment_set_value(adjust, upper);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6313 break;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6314 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6315 case DW_SCROLL_UP:
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6316 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6317 gdouble newpos = currpos - change;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6318 if(newpos < lower)
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6319 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6320 newpos = lower;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6321 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6322 gtk_adjustment_set_value(adjust, newpos);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6323 break;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6324 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6325 case DW_SCROLL_DOWN:
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6326 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6327 gdouble newpos = currpos + change;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6328 if(newpos > upper)
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6329 {
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6330 newpos = upper;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6331 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6332 gtk_adjustment_set_value(adjust, newpos);
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6333 break;
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6334 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6335 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6336 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6337 }
8f2722696a8e Implemented dw_container_scroll() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 843
diff changeset
6338 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
6339 }
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
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 /*
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 * 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
6343 * 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
6344 * 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
6345 * 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
6346 * 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
6347 * 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
6348 */
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 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
6350 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6351 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6352 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
6353 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
6354 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
6355
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6356 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
6357 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
6358
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6359 /* 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
6360 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
6361 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
6362
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6363 if(store)
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 /* 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
6366 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
6367 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6368 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
6369 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
6370 if(list)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6371 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6372 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
6373
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6374 if(path)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6375 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6376 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
6377
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6378 if(indices)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6379 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6380 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6381
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6382 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
6383 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6384 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
6385 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
6386 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6387 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6388 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6389 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
6390 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
6391 }
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 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
6394 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6395 GtkTreePath *path;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6396
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6397 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
6398 if(path)
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(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
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 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6406 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
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 else
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6410 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6411 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
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 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
6414 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6415 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
6416 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
6417 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6418 }
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 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
6421 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
6422 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6423
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6424 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6425 * 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
6426 * 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
6427 * 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
6428 * 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
6429 * 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
6430 * 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
6431 */
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 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
6433 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6434 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6435 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
6436 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
6437 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
6438
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6439 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
6440 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
6441
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6442 /* 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
6443 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
6444 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
6445
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6446 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6447 {
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
6448 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
6449 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
6450
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6451 /* 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
6452 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
6453 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6454 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
6455 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
6456
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6457 if(list)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6458 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6459 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
6460
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6461 if(path)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6462 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6463 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
6464
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6465 if(indices)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6466 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6467 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6468
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6469 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
6470 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6471 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
6472 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
6473 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6474 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6475 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6476 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
6477 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
6478 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6479 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6480 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
6481 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6482 /* 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
6483 * 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
6484 */
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6485 retval = NULL;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6486 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6487 else
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6488 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6489 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6490
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6491 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
6492 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6493 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
6494 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
6495 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6496 }
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 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
6499 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
6500 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6501
1322
3f1ac800bf65 Initial fix for being able to do container string comparisons instead of pointer on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1320
diff changeset
6502 int _find_iter(GtkListStore *store, GtkTreeIter *iter, char *text, int textcomp)
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6503 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6504 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
6505 char *thistext;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6506
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6507 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
6508 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6509 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
6510 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6511 gtk_tree_model_get(GTK_TREE_MODEL(store), iter, 0, &thistext, -1);
1322
3f1ac800bf65 Initial fix for being able to do container string comparisons instead of pointer on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1320
diff changeset
6512 if((textcomp && thistext && strcmp(thistext, text) == 0) || (!textcomp && thistext == text))
782
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 return TRUE;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6515 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6516 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6517 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6518 return FALSE;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6519 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6520
775
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 * 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
6523 * 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
6524 * 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
6525 * 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
6526 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6527 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
6528 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6529 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6530 GtkListStore *store = NULL;
1322
3f1ac800bf65 Initial fix for being able to do container string comparisons instead of pointer on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1320
diff changeset
6531 int textcomp, _locked_by_me = FALSE;
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6532
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6533 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
6534 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
1322
3f1ac800bf65 Initial fix for being able to do container string comparisons instead of pointer on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1320
diff changeset
6535 textcomp = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_textcomp"));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6536
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6537 /* 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
6538 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
6539 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
6540
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6541 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6542 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6543 GtkTreeIter iter;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6544
1322
3f1ac800bf65 Initial fix for being able to do container string comparisons instead of pointer on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1320
diff changeset
6545 if(_find_iter(store, &iter, text, textcomp))
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6546 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6547 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
6548
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6549 if(path)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6550 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6551 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
6552 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
6553 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6554 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6555 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6556 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
6557 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6558
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6559 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6560 * 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
6561 * 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
6562 * 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
6563 * 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
6564 */
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 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
6566 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6567 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6568 GtkListStore *store = NULL;
1322
3f1ac800bf65 Initial fix for being able to do container string comparisons instead of pointer on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1320
diff changeset
6569 int textcomp, _locked_by_me = FALSE;
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6570
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6571 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
6572 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
1322
3f1ac800bf65 Initial fix for being able to do container string comparisons instead of pointer on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1320
diff changeset
6573 textcomp = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_textcomp"));
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
6574
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6575 /* 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
6576 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
6577 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
6578
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6579 if(store)
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6580 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6581 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
6582 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
6583
1322
3f1ac800bf65 Initial fix for being able to do container string comparisons instead of pointer on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1320
diff changeset
6584 if(_find_iter(store, &iter, text, textcomp))
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6585 {
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6586 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
6587 rows--;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6588 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6589
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6590 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
6591 }
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6592 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
6593 }
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
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 /*
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 * 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
6597 * 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
6598 * 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
6599 */
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 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
6601 {
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6602 GtkWidget *cont;
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6603 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
6604
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6605 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
6606 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
6607
782
5a4bfe989f50 Most of the dw_container_* functions now implemented but many untested.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 781
diff changeset
6608 /* 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
6609 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
6610 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
6611 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
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
1223
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6614 /* 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
6615 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
6616 {
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6617 GdkEventButton event = { 0 };
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6618 long x, y;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6619 gboolean retval;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6620
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6621 dw_pointer_query_pos(&x, &y);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6622
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6623 event.button = button;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6624 event.x = x;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6625 event.y = y;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6626
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6627 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
6628 }
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6629
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6630 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6631 * 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
6632 * 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
6633 * 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
6634 * 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
6635 * 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
6636 */
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 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
6638 {
1223
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6639 GtkStatusIcon *status;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6640 GdkPixbuf *pixbuf;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6641 int _locked_by_me = FALSE;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6642
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6643 DW_MUTEX_LOCK;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6644 pixbuf = _find_pixbuf(icon, NULL, NULL);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6645 status = gtk_status_icon_new_from_pixbuf(pixbuf);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6646 if(bubbletext)
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6647 gtk_status_icon_set_tooltip_text(status, bubbletext);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6648 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
6649 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
6650 gtk_status_icon_set_visible(status, TRUE);
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6651 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
6652 }
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6654 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6655 * 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
6656 * 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
6657 * 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
6658 * 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
6659 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6660 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
6661 {
1223
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6662 GtkStatusIcon *status;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6663 int _locked_by_me = FALSE;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6664
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6665 DW_MUTEX_LOCK;
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6666 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
6667 g_object_unref(G_OBJECT(status));
1255ba41adad Added taskbar support for GTK...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1211
diff changeset
6668 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
6669 }
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
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 /*
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 * 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
6673 * 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
6674 * 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
6675 * 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
6676 * 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
6677 */
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 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
6679 {
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 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
6681 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
6682
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 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
6684 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
6685 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
6686 | 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
6687 | 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
6688 | 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
6689 | 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
6690 | 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
6691 | 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
6692 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
6693 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
6694 gtk_widget_show(tmp);
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6695 if(_DWDefaultFont)
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6696 dw_window_set_font(tmp, _DWDefaultFont);
775
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 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
6698 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
6699 }
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
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6701 /* Returns a GdkRGBA from a DW color */
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6702 static GdkRGBA _internal_color(unsigned long value)
775
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 {
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 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
6705 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6706 GdkRGBA color = { (gfloat)DW_RED_VALUE(value) / 255.0, (gfloat)DW_GREEN_VALUE(value) / 255.0, (gfloat)DW_BLUE_VALUE(value) / 255.0, 1.0 };
775
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 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
6708 }
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 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
6710 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
6711 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
6712 }
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 /* 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
6715 * 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
6716 * 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
6717 * 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
6718 * 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
6719 */
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 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
6721 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6722 GdkRGBA color = _internal_color(value);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6723 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6724
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6725 *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
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
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 /* 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
6729 * 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
6730 * 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
6731 * 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
6732 * 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
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 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
6735 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6736 GdkRGBA *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
6737
775
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 if(value == DW_CLR_DEFAULT)
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6739 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6740 if(background)
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6741 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6742 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
6743 free(background);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6744 }
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6745 }
775
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 else
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6747 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6748 GdkRGBA color = _internal_color(value);
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6749
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6750 if(!background)
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6751 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6752 background = malloc(sizeof(GdkRGBA));
972
32830f1683c9 Fixed an issue where dw_color_background_set() would not function.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 971
diff changeset
6753 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
6754 }
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6755 *background = color;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
6756 }
775
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
1597
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6759 #if GTK_CHECK_VERSION(3,3,11)
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6760 /* Allows the user to choose a color using the system's color chooser dialog.
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6761 * Parameters:
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6762 * value: current color
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6763 * Returns:
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6764 * The selected color or the current color if cancelled.
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6765 */
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6766 unsigned long API dw_color_choose(unsigned long value)
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6767 {
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6768 GtkColorChooser *cd;
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6769 GdkRGBA color = _internal_color(value);
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6770 int _locked_by_me = FALSE;
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6771 unsigned long retcolor = value;
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6772
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6773 DW_MUTEX_LOCK;
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6774 cd = (GtkColorChooser *)gtk_color_chooser_dialog_new("Choose color", NULL);
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6775 gtk_color_chooser_set_use_alpha(cd, FALSE);
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6776 gtk_color_chooser_set_rgba(cd, &color);
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6777
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6778 gtk_widget_show(GTK_WIDGET(cd));
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6779
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6780 if(gtk_dialog_run(GTK_DIALOG(cd)) == GTK_RESPONSE_OK)
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6781 {
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6782 gtk_color_chooser_get_rgba(cd, &color);
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6783 retcolor = DW_RGB((int)(color.red * 255), (int)(color.green * 255), (int)(color.blue * 255));
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6784 }
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6785 gtk_widget_destroy(GTK_WIDGET(cd));
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6786 DW_MUTEX_UNLOCK;
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6787 return retcolor;
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6788 }
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6789 #else
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6790 static int _dw_color_active = 0;
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6791
775
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 /* 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
6793 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
6794 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6795 GdkRGBA 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
6796 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
6797 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
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 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
6800 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
6801
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 colorsel = (GtkColorSelection *)gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(dwwait->data));
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6803 gtk_color_selection_get_current_rgba(colorsel, &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
6804 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
6805 _dw_color_active = 0;
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6806 dw_color = DW_RGB((int)(color.red * 255), (int)(color.green * 255), (int)(color.blue * 255));
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6807 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
6808 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
6809 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6810
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6811 /* 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
6812 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
6813 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6814 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
6815 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
6816
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6817 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
6818 _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
6819 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
6820 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
6821 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6822
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 /* 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
6824 * 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
6825 * 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
6826 * 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
6827 * 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
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 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
6830 {
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
6831 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
6832 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
6833 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
6834 GtkColorSelection *colorsel;
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6835 GdkRGBA color = _internal_color(value);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6836 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
6837
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 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
6839
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 /* 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
6841 * 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
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 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
6844 {
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 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
6846 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
6847 }
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6849 _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
6850
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6851 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
6852
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6853 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
6854
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6855 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
6856 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
6857 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
6858 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
6859
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6860 gtk_color_selection_set_previous_rgba(colorsel,&color);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6861 gtk_color_selection_set_current_rgba(colorsel,&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
6862 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
6863
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6864 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
6865
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 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
6867 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
6868 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
6869 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
6870 return (unsigned long)dw_color;
1597
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6871 }
ed09531b7f0e Removed deprecated GtkColorSelectionDialog in 3.4 and higher switching to GtkColorChooser.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1583
diff changeset
6872 #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
6873
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 /* 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
6875 * 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
6876 * 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
6877 * 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
6878 * 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
6879 * 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
6880 */
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 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
6882 {
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 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
6884 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
6885
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 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
6887 if(handle)
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6888 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6889 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
6890 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6891 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6892 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6893 DW_MUTEX_UNLOCK;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6894 return;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6895 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6896 cr = gdk_cairo_create(window);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6897 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6898 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
6899 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
6900 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
6901 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6902 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6903
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6904 gdk_cairo_set_source_rgba(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
6905 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
6906 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
6907 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
6908 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
6909 }
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 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
6911 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6912
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6913 /* 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
6914 * 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
6915 * 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
6916 * 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
6917 * 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
6918 * 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
6919 * 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
6920 * 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
6921 */
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 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
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 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
6925 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
6926
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6927 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
6928 if(handle)
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6929 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6930 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
6931 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6932 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6933 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6934 DW_MUTEX_UNLOCK;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6935 return;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6936 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6937 cr = gdk_cairo_create(window);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6938 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6939 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
6940 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
6941 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
6942 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6943 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6944
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6945 gdk_cairo_set_source_rgba(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
6946 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
6947 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
6948 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
6949 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
6950 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
6951 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6952 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
6953 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6954
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6955 /* 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
6956 * 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
6957 * 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
6958 * 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
6959 * 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
6960 * 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
6961 * 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
6962 * 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
6963 */
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
6964 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
6965 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6966 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
6967 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
6968 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
6969
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6970 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
6971 if(handle)
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6972 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6973 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
6974 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6975 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6976 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6977 DW_MUTEX_UNLOCK;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6978 return;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6979 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6980 cr = gdk_cairo_create(window);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
6981 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6982 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
6983 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
6984 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
6985 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6986 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
1524
010e1d916ee7 Added DW_DRAW_NOAA support on GTK3 for both pixmaps and windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1510
diff changeset
6987
010e1d916ee7 Added DW_DRAW_NOAA support on GTK3 for both pixmaps and windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1510
diff changeset
6988 if(flags & DW_DRAW_NOAA)
010e1d916ee7 Added DW_DRAW_NOAA support on GTK3 for both pixmaps and windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1510
diff changeset
6989 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
010e1d916ee7 Added DW_DRAW_NOAA support on GTK3 for both pixmaps and windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1510
diff changeset
6990
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
6991 gdk_cairo_set_source_rgba(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
6992 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
6993 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
6994 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
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 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
6997 }
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
6998 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
6999 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
7000 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
7001 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
7002 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7003 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
7004 }
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
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 /* 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
7007 * 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
7008 * 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
7009 * 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
7010 * 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
7011 * 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
7012 * 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
7013 * 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
7014 * 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
7015 */
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
7016 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
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 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
7019 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
7020
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7021 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
7022 if(handle)
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7023 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7024 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
7025 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7026 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7027 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7028 DW_MUTEX_UNLOCK;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7029 return;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7030 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7031 cr = gdk_cairo_create(window);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7032 }
775
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 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
7034 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
7035 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
7036 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
7037 GdkRGBA *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
7038
1524
010e1d916ee7 Added DW_DRAW_NOAA support on GTK3 for both pixmaps and windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1510
diff changeset
7039 if(flags & DW_DRAW_NOAA)
010e1d916ee7 Added DW_DRAW_NOAA support on GTK3 for both pixmaps and windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1510
diff changeset
7040 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
010e1d916ee7 Added DW_DRAW_NOAA support on GTK3 for both pixmaps and windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1510
diff changeset
7041
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
7042 gdk_cairo_set_source_rgba(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
7043 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
7044 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
7045 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
7046 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
7047 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
7048 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
7049 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
7050 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
7051 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
7052 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7053 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
7054 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7055
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7056 /* 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
7057 * Parameters:
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7058 * 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
7059 * 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
7060 * 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
7061 * 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
7062 * 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
7063 * 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
7064 * 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
7065 * 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
7066 * 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
7067 * 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
7068 */
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7069 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
7070 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7071 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
7072 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
7073
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7074 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
7075 if(handle)
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7076 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7077 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
7078 /* 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
7079 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
7080 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7081 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
7082 return;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7083 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7084 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
7085 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7086 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
7087 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
7088 if(cr)
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7089 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
7090 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
1634
c3e08322b8f6 Fixed issues drawing arcs on GTK3 and GTK2 for printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1597
diff changeset
7091 int width = abs(x2-x1);
c3e08322b8f6 Fixed issues drawing arcs on GTK3 and GTK2 for printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1597
diff changeset
7092 float scale = fabs((float)(y2-y1))/(float)width;
1524
010e1d916ee7 Added DW_DRAW_NOAA support on GTK3 for both pixmaps and windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1510
diff changeset
7093
010e1d916ee7 Added DW_DRAW_NOAA support on GTK3 for both pixmaps and windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1510
diff changeset
7094 if(flags & DW_DRAW_NOAA)
010e1d916ee7 Added DW_DRAW_NOAA support on GTK3 for both pixmaps and windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1510
diff changeset
7095 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
010e1d916ee7 Added DW_DRAW_NOAA support on GTK3 for both pixmaps and windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1510
diff changeset
7096
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
7097 gdk_cairo_set_source_rgba(cr, foreground);
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7098 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
7099 if(scale != 1.0)
87d6d11b6323 Initial support for ellipses on GTK3 and GTK2 Printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1281
diff changeset
7100 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
7101 if(flags & DW_DRAW_FULL)
1634
c3e08322b8f6 Fixed issues drawing arcs on GTK3 and GTK2 for printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1597
diff changeset
7102 cairo_arc(cr, xorigin, yorigin / scale, width/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
7103 else
1634
c3e08322b8f6 Fixed issues drawing arcs on GTK3 and GTK2 for printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1597
diff changeset
7104 {
c3e08322b8f6 Fixed issues drawing arcs on GTK3 and GTK2 for printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1597
diff changeset
7105 double dx = xorigin - x1;
c3e08322b8f6 Fixed issues drawing arcs on GTK3 and GTK2 for printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1597
diff changeset
7106 double dy = yorigin - y1;
c3e08322b8f6 Fixed issues drawing arcs on GTK3 and GTK2 for printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1597
diff changeset
7107 double r = sqrt(dx*dx + dy*dy);
c3e08322b8f6 Fixed issues drawing arcs on GTK3 and GTK2 for printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1597
diff changeset
7108 double a1 = atan2((y1-yorigin), (x1-xorigin));
c3e08322b8f6 Fixed issues drawing arcs on GTK3 and GTK2 for printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1597
diff changeset
7109 double a2 = atan2((y2-yorigin), (x2-xorigin));
c3e08322b8f6 Fixed issues drawing arcs on GTK3 and GTK2 for printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1597
diff changeset
7110
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
7111 cairo_arc(cr, xorigin, yorigin, r, a1, a2);
1634
c3e08322b8f6 Fixed issues drawing arcs on GTK3 and GTK2 for printing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1597
diff changeset
7112 }
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
7113 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
7114 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
7115 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
7116 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
7117 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7118 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
7119 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1258
diff changeset
7120
775
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 /* 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
7122 * 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
7123 * 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
7124 * 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
7125 * 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
7126 * 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
7127 * 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
7128 */
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 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
7130 {
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 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
7132 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
7133 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
7134 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
7135
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 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
7137 return;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
7138
775
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 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
7140 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
7141 {
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7142 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
7143 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7144 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7145 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7146 DW_MUTEX_UNLOCK;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7147 return;
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7148 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7149 cr = gdk_cairo_create(window);
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7150 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
7151 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
7152 }
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 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
7154 {
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7155 if(pixmap->font)
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7156 fontname = pixmap->font;
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7157 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
7158 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
7159 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
7160 }
775
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(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
7162 {
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7163 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
7164 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
7165 {
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 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
7167
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 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
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 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
7171
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 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
7173 {
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
7174 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
7175 GdkRGBA *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
7176
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 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
7178 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
7179
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
7180 gdk_cairo_set_source_rgba(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
7181 /* 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
7182 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
7183 {
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7184 PangoAttrList *list = pango_layout_get_attributes(layout);
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
7185 PangoAttribute *attr = pango_attr_background_new((guint16)(background->red * 65535),
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
7186 (guint16)(background->green * 65535),
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
7187 (guint16)(background->blue* 65535));
892
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7188 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
7189 {
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7190 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
7191 }
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7192 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
7193 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
7194 }
82f68adde8a0 Fix for dw_draw_text() not using the background color on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 885
diff changeset
7195 /* 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
7196 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
7197 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
7198
775
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 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
7200 }
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 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
7202 }
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 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
7204 }
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 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
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 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
7208 }
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 /* 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
7211 * 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
7212 * 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
7213 * 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
7214 * 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
7215 * 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
7216 * 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
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 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
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 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
7221 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
7222 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
7223 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
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 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
7226 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
7227
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 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
7229 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
7230 {
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 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
7232 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
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 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
7235 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
7236 }
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 }
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 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
7239 {
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
7240 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
7241 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
7242 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
7243 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
7244 }
775
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
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 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
7247 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
7248 {
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 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
7250
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 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
7252 {
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 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
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 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
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 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
7258
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 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
7260 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
7261 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
7262
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 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
7264 *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
7265 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
7266 *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
7267
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 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
7269 }
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 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
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 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
7273 }
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 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
7275 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
7276 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
7277 }
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
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 /*
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 * 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
7281 * 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
7282 * 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
7283 * 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
7284 * 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
7285 * 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
7286 * 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
7287 * 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
7288 * 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
7289 * 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
7290 */
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 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
7292 {
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 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
7294 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
7295
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 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
7297 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
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 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
7300 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
7301
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 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
7303
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
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 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
7306 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
7307 /* 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
7308 * 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
7309 */
815
c1e93dd575a5 Initial implementation of a slightly disjointed dual cairo_surface gdkpixbuf image model.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 814
diff changeset
7310 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
7311 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
7312 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
7313 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
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7316 /*
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 * 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
7318 * 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
7319 * 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
7320 * 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
7321 * 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
7322 * (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
7323 * 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
7324 * 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
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 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
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 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
7329 HPIXMAP pixmap;
1258
3df86772b625 Updated the list of supported image formats for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1245
diff changeset
7330 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
7331 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
7332 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
7333
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7334 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
7335 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
7336
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7337 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
7338
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7339 /* 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
7340 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
7341 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7342 /* 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
7343 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
7344 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7345 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
7346 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
7347 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
7348 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7349 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
7350 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
7351 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7352 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7353 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
7354 {
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 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
7356 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
7357 }
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
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 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
7361 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
7362 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
7363 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
7364 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
7365 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
7366 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
7367 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
7368 }
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
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 * 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
7372 * 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
7373 * 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
7374 * 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
7375 * 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
7376 * (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
7377 * 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
7378 * 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
7379 */
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 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
7381 {
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 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
7383 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
7384 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
7385 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
7386
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7387 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
7388 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
7389
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7390 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
7391 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7392 * 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
7393 * 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
7394 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7395 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
7396 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
7397 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
7398 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7399 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
7400 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
7401 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7402 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
7403 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7404 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
7405 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
7406 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7407 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
7408 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
7409 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
7410 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
7411 /* 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
7412 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
7413 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
7414 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
7415 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
7416 }
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 /*
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 * 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
7420 * 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
7421 * 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
7422 * 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
7423 * 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
7424 * 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
7425 * 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
7426 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7427 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
7428 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7429 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
7430 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
7431 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7432
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 /*
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 * 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
7435 * 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
7436 * 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
7437 * 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
7438 * 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
7439 * 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
7440 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7441 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
7442 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7443 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
7444 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
7445
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 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
7447 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
7448
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7449
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7450 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
7451 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
7452 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
7453 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
7454 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7455
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 /* 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
7457 * 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
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 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
7460 {
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 }
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
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 /*
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7464 * 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
7465 * 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
7466 * 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
7467 * Parameters:
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7468 * 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
7469 * 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
7470 * 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
7471 * Returns:
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7472 * 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
7473 */
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7474 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
7475 {
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7476 if(pixmap && fontname && *fontname)
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7477 {
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7478 char *oldfont = pixmap->font;
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7479 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
7480 _convert_font(pixmap->font);
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7481 if(oldfont)
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7482 free(oldfont);
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7483 return DW_ERROR_NONE;
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7484 }
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7485 return DW_ERROR_GENERAL;
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7486 }
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7487
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7488 /*
775
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 * 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
7490 * 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
7491 * 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
7492 * 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
7493 */
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 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
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 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
7497
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 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
7499 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
7500 cairo_surface_destroy(pixmap->image);
1148
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7501 if(pixmap->font)
439f276042cc Implemented dw_pixmap_set_font() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1145
diff changeset
7502 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
7503 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
7504 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
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
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 /*
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 * 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
7509 * 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
7510 * 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
7511 * 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
7512 * 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
7513 * 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
7514 * 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
7515 * 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
7516 * 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
7517 * 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
7518 * 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
7519 * 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
7520 */
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7521 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
7522 {
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7523 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
7524 }
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7525
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7526 /*
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7527 * 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
7528 * Parameters:
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7529 * dest: Destination window handle.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7530 * destp: Destination pixmap. (choose only one).
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7531 * xdest: X coordinate of destination.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7532 * ydest: Y coordinate of destination.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7533 * width: Width of the target area.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7534 * height: Height of the target area.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7535 * src: Source window handle.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7536 * srcp: Source pixmap. (choose only one).
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7537 * xsrc: X coordinate of source.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7538 * ysrc: Y coordinate of source.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7539 * srcwidth: Width of area to copy.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7540 * srcheight: Height of area to copy.
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7541 * Returns:
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7542 * 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
7543 */
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7544 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
7545 {
775
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 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
7547 cairo_t *cr = NULL;
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7548 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
7549
1177
c38ec904b6d3 Fixed dw_pixmap_bitblt() on printing context pixmaps in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1161
diff changeset
7550 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
7551 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
7552
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 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
7554 if(dest)
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7555 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7556 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
7557 /* Safety check for non-existant windows */
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7558 if(!window || !GDK_IS_WINDOW(window))
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7559 {
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7560 DW_MUTEX_UNLOCK;
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7561 return retval;
818
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7562 }
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7563 cr = gdk_cairo_create(window);
c17634e2b303 More safety checks in the drawing functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 817
diff changeset
7564 }
775
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 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
7566 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
7567
775
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 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
7569 {
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7570 double xscale = 1, yscale = 1;
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7571
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7572 if(srcwidth != -1 && srcheight != -1)
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7573 {
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7574 xscale = (double)width / (double)srcwidth;
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7575 yscale = (double)height / (double)srcheight;
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7576 cairo_scale(cr, xscale, yscale);
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7577 }
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7578
775
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 if(src)
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7580 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
7581 else if(srcp)
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7582 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
7583
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7584 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
7585 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
7586 cairo_destroy(cr);
1245
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7587 retval = DW_ERROR_NONE;
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7588 }
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7589 DW_MUTEX_UNLOCK;
3a2ffe3a7eae Implemented dw_pixmap_stretch_bitblt() on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1240
diff changeset
7590 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
7591 }
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
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 * 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
7595 * 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
7596 * 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
7597 * 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
7598 */
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 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
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 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
7602
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7603 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
7604 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
7605 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
7606 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7607
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7608 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
7609 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7610 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
7611
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7612 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
7613 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7614 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
7615 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
7616 }
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 }
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
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 /* 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
7620 * 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
7621 * 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
7622 * 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
7623 * 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
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 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
7626 {
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 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
7628 char *newname;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
7629 char errorbuf[1025] = {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
7630
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(!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
7633 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
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 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
7636 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
7637
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 /* 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
7639 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
7640
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 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
7642 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
7643
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 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
7645 _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
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 *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
7648 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
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 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
7651 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
7652 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
7653 *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
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
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 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
7657
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7658 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
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
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 /* 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
7662 * 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
7663 * 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
7664 * 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
7665 * 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
7666 * 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
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 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
7669 {
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 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
7671 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
7672
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 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
7674 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
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 *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
7677 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
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
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 /* 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
7681 * 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
7682 * 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
7683 */
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 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
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 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
7687 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
7688 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
7689 }
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
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 * 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
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 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
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 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
7697
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 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
7699 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
7700 }
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7702 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7703 * 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
7704 * 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
7705 * 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
7706 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7707 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
7708 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7709 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
7710 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7711 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
7712 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
7713 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7714 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7715
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7716 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7717 * 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
7718 * 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
7719 * 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
7720 */
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 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
7722 {
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 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
7724 * 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
7725 */
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 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
7727 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
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 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
7730
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 /* 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
7732 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
7733 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
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7736 /*
1158
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7737 * 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
7738 * Parameters:
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7739 * 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
7740 * Returns:
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7741 * 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
7742 */
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7743 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
7744 {
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7745 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
7746 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
7747 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
7748 }
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7749
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1156
diff changeset
7750 /*
775
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 * 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
7752 * 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
7753 * 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
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 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
7756 {
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 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
7758 }
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
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 /*
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 * 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
7762 */
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 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
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 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
7766
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 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
7768 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
7769
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 /* 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
7771 * 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
7772 * 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
7773 */
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 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
7775 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
7776 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
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 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
7779 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
7780 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
7781
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7782 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
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
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 * 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
7787 * 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
7788 * 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
7789 */
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 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
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 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
7793 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
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 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
7796 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
7797 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
7798 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
7799 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
7800 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
7801 }
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 /*
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 * 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
7805 * 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
7806 * 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
7807 * 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
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 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
7810 {
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 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
7812 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
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 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
7815 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
7816 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
7817 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
7818 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
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
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 /*
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 * 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
7823 * 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
7824 * 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
7825 * 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
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 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
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 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
7830
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(!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
7832 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
7833
1203
fc87309372ef Same fix for GTK2/3 as I just committed for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1191
diff changeset
7834 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
7835
775
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(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
7837 {
fc87309372ef Same fix for GTK2/3 as I just committed for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1191
diff changeset
7838 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
7839 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
7840 }
fc87309372ef Same fix for GTK2/3 as I just committed for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1191
diff changeset
7841
1156
03b6d9fdfac0 Fixed a typo on Unix... timeout not time.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
7842 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
7843 {
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
7844 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
7845 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
7846
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
7847 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
7848 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
7849 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
7850 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
7851 }
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
7852 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
7853 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
7854
775
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 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
7856 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
7857 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
7858 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
7859 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
7860 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
7861 }
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 /*
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 * 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
7865 * 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
7866 * 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
7867 */
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 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
7869 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7870 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
7871 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
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 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
7874 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
7875 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
7876 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
7877 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
7878 *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
7879
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
7880 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
7881 }
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7883 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
7884 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
7885 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
7886 };
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 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
7889 {
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 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
7891 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
7892 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
7893 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
7894 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
7895 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
7896
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 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
7898 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
7899
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 /* 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
7901 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
7902 {
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 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
7904 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
7905 }
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 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
7908 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
7909
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 /* 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
7911 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
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 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
7914 {
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 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
7916 FD_SET(listenfd, &rd);
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
7917 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
7918
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 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
7920
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 /* 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
7922 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
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 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
7925 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
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 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
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
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 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
7931 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
7932
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 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
7934 {
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 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
7936 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
7937
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(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
7939 {
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 /* 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
7941 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
7942 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
7943
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 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
7945 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
7946
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 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
7948
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 /* 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
7950 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
7951 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
7952 }
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 }
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
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 /* 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
7956 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
7957 {
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 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
7959 {
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 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
7961 {
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 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
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 /* 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
7965 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
7966 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
7967 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
7968 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
7969 {
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 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
7971 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
7972 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
7973 }
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 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
7975
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 /* 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
7977 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
7978 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
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 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
7981 {
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 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
7983 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7984 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
7985 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7986 /* 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
7987 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
7988 }
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 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
7990 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
7991 /* 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
7992 {
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 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
7994 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
7995
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 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
7997
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 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
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 /* 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
8001 * 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
8002 * 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
8003 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8004 if(array[s].waiting)
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8005 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
8006 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8007 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8008 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
8009 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
8010 /* 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
8011 {
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 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
8013
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 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
8015
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 /* 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
8017 if(posted)
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8018 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
8019 }
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 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
8021 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
8022 {
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 /* 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
8024 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
8025 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8026 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
8027 }
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 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8030 }
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8031 }
775
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 }
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
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 /* 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
8035 /* 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
8036 * 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
8037 * 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
8038 * 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
8039 * 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
8040 * 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
8041 */
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 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
8043 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8044 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
8045 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
8046 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
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 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
8049 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
8050
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8051 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
8052 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
8053 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
8054 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
8055 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
8056 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
8057 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
8058
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 /* 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
8060 * 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
8061 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8062 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
8063
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 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
8065 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
8066 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
8067 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
8068
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 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
8070 {
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 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
8072 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
8073 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
8074 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
8075 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
8076 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
8077 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
8078 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
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 /* 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
8082 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
8083 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
8084 }
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 /* 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
8087 * 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
8088 * 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
8089 * 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
8090 * 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
8091 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8092 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
8093 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8094 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
8095 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
8096 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
8097 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
8098
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8099 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
8100 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
8101 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
8102 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
8103 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
8104 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
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
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 /* 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
8108 * 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
8109 * 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
8110 * 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
8111 * 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
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 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
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 /* 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
8116 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
8117
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8118 if(GPOINTER_TO_INT(eve) < 0)
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8119 return DW_ERROR_NONE;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8120
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8121 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
8122 return DW_ERROR_NONE;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8123 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
8124 }
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 /* 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
8127 * 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
8128 * 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
8129 * 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
8130 * 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
8131 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8132 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
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
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 /* 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
8136 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
8137
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8138 if(GPOINTER_TO_INT(eve) < 0)
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8139 return DW_ERROR_NONE;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8140
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8141 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
8142 return DW_ERROR_NONE;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8143 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
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
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 /* 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
8147 * 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
8148 * 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
8149 * 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
8150 * 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
8151 * 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
8152 * 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
8153 */
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 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
8155 {
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 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
8157 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
8158 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
8159 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
8160
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8161 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
8162 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
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 /* 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
8165 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
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 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
8168 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
8169
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 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
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 FD_ZERO(&rd);
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8174 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
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 /* 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
8177 tmp = (char)2;
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8178 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
8179
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8180 if(retval == 1)
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8181 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
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 /* 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
8184 tmp = (char)3;
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8185 if(retval == 1)
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8186 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
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 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
8189 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
8190 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
8191 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
8192
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 /* 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
8194 * 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
8195 */
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8196 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
8197 return DW_ERROR_NONE;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8198 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
8199 }
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
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 /* 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
8202 * 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
8203 * 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
8204 * 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
8205 * 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
8206 */
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 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
8208 {
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 /* 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
8210 * 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
8211 */
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8212 close(GPOINTER_TO_INT(eve));
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8213 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
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
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 /*
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 * 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
8218 */
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 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
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 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
8222 void **tmp = (void **)data;
1554
e39e9e67110d Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1545
diff changeset
8223 GdkRGBA *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
8224
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 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
8226
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8227 /* Initialize colors */
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8228 _init_thread();
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8229
775
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 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
8231 free(tmp);
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8232
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8233 /* Free colors */
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8234 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
8235 free(foreground);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
8236 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
8237 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
8238 }
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 /*
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 * 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
8242 * 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
8243 * 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
8244 * 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
8245 * 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
8246 * 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
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 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
8249 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
8250 char namebuf[1025];
775
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 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
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 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
8254 snprintf(namebuf, 1024, "/tmp/.dw/%s", name);
775
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
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 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
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 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
8259 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
8260 }
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
1106
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8262 if(ftruncate(handle->fd, size))
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8263 {
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8264 close(handle->fd);
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8265 free(handle);
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8266 return NULL;
eb6b27d17fe7 Fixed the 64bit warnings in GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1097
diff changeset
8267 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8268
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8269 /* 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
8270 *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
8271
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8272 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
8273 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8274 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
8275 *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
8276 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
8277 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
8278 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8279
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8280 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
8281 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
8282 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
8283
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8284 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
8285 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8286
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8287 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8288 * 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
8289 * 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
8290 * 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
8291 * 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
8292 * 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
8293 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8294 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
8295 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
8296 char namebuf[1025];
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8297 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
8298
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8299 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
8300 snprintf(namebuf, 1024, "/tmp/.dw/%s", name);
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8301
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8302 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
8303 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8304 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
8305 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
8306 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8307
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8308 /* 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
8309 *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
8310
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8311 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
8312 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8313 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
8314 *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
8315 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
8316 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
8317 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8318
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8319 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
8320 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
8321 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
8322
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8323 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
8324 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8325
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8326 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8327 * 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
8328 * 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
8329 * 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
8330 * 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
8331 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8332 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
8333 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8334 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
8335 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
8336
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8337 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
8338 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
8339 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8340 /* 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
8341 * 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
8342 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8343 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
8344 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
8345 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
8346 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8347 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
8348 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8349 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8350 * 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
8351 * 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
8352 * 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
8353 * 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
8354 * 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
8355 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8356 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
8357 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8358 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
8359 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
8360 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
8361
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8362 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
8363 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
8364
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8365 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
8366 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
8367 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
8368 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
8369 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
8370 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8371
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8372 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8373 * 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
8374 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8375 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
8376 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8377 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
8378 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8379
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8380 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8381 * 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
8382 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8383 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
8384 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8385 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
8386 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8387
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8388 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8389 * 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
8390 * 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
8391 * 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
8392 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8393 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
8394 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8395 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
8396 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8397
1561
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8398 /* Internal function to get the recommended size of scrolled items */
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8399 void _get_scrolled_size(GtkWidget *item, gint *thiswidth, gint *thisheight)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8400 {
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8401 GtkWidget *widget = g_object_get_data(G_OBJECT(item), "_dw_user");
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8402
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8403 *thisheight = *thiswidth = 0;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8404
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8405 if(widget)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8406 {
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8407 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8408 {
1566
035bc006afbe Experimental change... halfway between min and max for tree controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1563
diff changeset
8409 /* Set to half for tree */
035bc006afbe Experimental change... halfway between min and max for tree controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1563
diff changeset
8410 *thiswidth = (int)((_DW_SCROLLED_MAX_WIDTH + _DW_SCROLLED_MIN_WIDTH)/2);
035bc006afbe Experimental change... halfway between min and max for tree controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1563
diff changeset
8411 *thisheight = (int)((_DW_SCROLLED_MAX_HEIGHT + _DW_SCROLLED_MIN_HEIGHT)/2);
1561
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8412 }
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8413 else if(GTK_IS_TEXT_VIEW(widget))
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8414 {
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8415 unsigned long bytes;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8416 int height, width;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8417 char *buf, *ptr;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8418 int wrap = (gtk_text_view_get_wrap_mode(GTK_TEXT_VIEW(widget)) == GTK_WRAP_WORD);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8419 static char testtext[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8420 int hscrolled = FALSE;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8421
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8422 *thiswidth = *thisheight = 0;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8423
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8424 dw_mle_get_size(item, &bytes, NULL);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8425
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8426 ptr = buf = alloca(bytes + 2);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8427 dw_mle_export(item, buf, 0, (int)bytes);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8428 buf[bytes] = 0;
1562
9a8aa230a538 Ported a couple fixes from GTK3 to GTK2 that I had missed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1561
diff changeset
8429 strcat(buf, "\r");
1561
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8430
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8431 /* MLE */
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8432 while((ptr = strstr(buf, "\r")))
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8433 {
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8434 ptr[0] = 0;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8435 width = 0;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8436 if(strlen(buf))
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8437 dw_font_text_extents_get(item, NULL, buf, &width, &height);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8438 else
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8439 dw_font_text_extents_get(item, NULL, testtext, NULL, &height);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8440
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8441 if(wrap && width > _DW_SCROLLED_MAX_WIDTH)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8442 {
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8443 *thiswidth = _DW_SCROLLED_MAX_WIDTH;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8444 *thisheight += height * (width / _DW_SCROLLED_MAX_WIDTH);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8445 }
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8446 else
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8447 {
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8448 if(width > *thiswidth)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8449 {
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8450 if(width > _DW_SCROLLED_MAX_WIDTH)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8451 {
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8452 *thiswidth = _DW_SCROLLED_MAX_WIDTH;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8453 hscrolled = TRUE;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8454 }
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8455 else
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8456 *thiswidth = width;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8457 }
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8458 }
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8459 *thisheight += height;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8460 if(ptr[1] == '\n')
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8461 buf = &ptr[2];
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8462 else
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8463 buf = &ptr[1];
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8464 }
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8465 if(hscrolled)
1563
90fdfc8aa16d Slight adjustment to the scrollbar additional space on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1562
diff changeset
8466 *thisheight += 10;
1561
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8467 }
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8468 else
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8469 {
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8470 gtk_widget_get_preferred_height(GTK_WIDGET(widget), NULL, thisheight);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8471 gtk_widget_get_preferred_width(GTK_WIDGET(widget), NULL, thiswidth);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8472
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8473 *thisheight += 20;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8474 *thiswidth += 20;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8475 }
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8476 }
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8477 if(*thiswidth < _DW_SCROLLED_MIN_WIDTH)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8478 *thiswidth = _DW_SCROLLED_MIN_WIDTH;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8479 if(*thiswidth > _DW_SCROLLED_MAX_WIDTH)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8480 *thiswidth = _DW_SCROLLED_MAX_WIDTH;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8481 if(*thisheight < _DW_SCROLLED_MIN_HEIGHT)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8482 *thisheight = _DW_SCROLLED_MIN_HEIGHT;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8483 if(*thisheight > _DW_SCROLLED_MAX_HEIGHT)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8484 *thisheight = _DW_SCROLLED_MAX_HEIGHT;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8485 }
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8486
1087
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8487 /* 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
8488 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
8489 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8490 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
8491 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
8492
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8493 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
8494 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
8495
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8496 /*
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8497 * 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
8498 * 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
8499 */
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8500 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
8501 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8502 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
8503 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
8504 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8505
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8506 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
8507
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
8508 /* If this is a special box, like: Window, Groupbox, Scrollbox...
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
8509 * get the internal box handle.
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
8510 */
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
8511 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
8512 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
8513
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
8514 /* Can't pack nothing with GTK, so create an empty label */
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
8515 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
8516 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8517 item = gtk_label_new("");
1669
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8518 g_object_set_data(G_OBJECT(item), "_dw_padding", GINT_TO_POINTER(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
8519 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
8520 }
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
8521 /* Due to GTK3 minimum size limitations, if we are packing a widget
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
8522 * with an image, we need to scale the image down to fit the packed size.
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
8523 */
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
8524 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
8525 {
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8526 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
8527
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
8528 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
8529 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8530 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
8531 int pheight = gdk_pixbuf_get_height(pixbuf);
1426
dfd9f177c34c Fix incorrect pixbuf scaling on GTK3 when -1 is passed as a parameter
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1414
diff changeset
8532
dfd9f177c34c Fix incorrect pixbuf scaling on GTK3 when -1 is passed as a parameter
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1414
diff changeset
8533 if(width == -1)
dfd9f177c34c Fix incorrect pixbuf scaling on GTK3 when -1 is passed as a parameter
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1414
diff changeset
8534 width = pwidth;
dfd9f177c34c Fix incorrect pixbuf scaling on GTK3 when -1 is passed as a parameter
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1414
diff changeset
8535 if(height == -1)
dfd9f177c34c Fix incorrect pixbuf scaling on GTK3 when -1 is passed as a parameter
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1414
diff changeset
8536 height = pheight;
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
8537
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8538 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
8539 pixbuf = gdk_pixbuf_scale_simple(pixbuf, pwidth > width ? width : pwidth, pheight > height ? height : pheight, GDK_INTERP_BILINEAR);
1426
dfd9f177c34c Fix incorrect pixbuf scaling on GTK3 when -1 is passed as a parameter
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1414
diff changeset
8540 gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
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
8541 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8542 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8543
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
8544 /* Check if the item to be packed is a special 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
8545 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
8546
1451
95ca625b8ffc Removed GtkVbox and associated code from top-level windows on GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
8547 /* Make sure our target box is valid */
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8548 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
8549 {
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
8550 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
8551 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
8552
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8553 /* 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
8554 * 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
8555 * 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
8556 * 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
8557 */
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8558 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
8559 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8560 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
8561
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8562 /* 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
8563 * 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
8564 */
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8565 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
8566
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8567 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
8568 {
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
8569 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
8570 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
8571 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
8572 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
8573 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8574 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8575 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
8576 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8577 /* 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
8578 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
8579 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8580
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8581 /* 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
8582 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
8583 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
8584 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
8585 index = boxcount;
1656
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8586
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8587 /* Fix the index by taking into account empty cells */
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8588 if(boxtype == DW_VERT)
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8589 {
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8590 int z;
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8591
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8592 for(z=0;z<index;z++)
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8593 {
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8594 if(!gtk_grid_get_child_at(GTK_GRID(box), 0, z))
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8595 index++;
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8596 }
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8597 }
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8598 else
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8599 {
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8600 int z;
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8601
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8602 for(z=0;z<index;z++)
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8603 {
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8604 if(!gtk_grid_get_child_at(GTK_GRID(box), z, 0))
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8605 index++;
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8606 }
01f59ba51e7f Take into account empty box cells created by dw_window_destroy() in GTK3
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1637
diff changeset
8607 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8608
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8609 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
8610 /* 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
8611 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
8612 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
8613 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
8614 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
8615 /* 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
8616 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
8617 /* 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
8618 * 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
8619 */
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
8620 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
8621 {
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8622 gtk_grid_insert_row(GTK_GRID(box), index);
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8623 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
8624 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8625 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
8626 {
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8627 gtk_grid_insert_column(GTK_GRID(box), index);
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
8628 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
8629 }
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
8630 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount + 1));
1545
6edf3fce77f2 Initial support for container and MLE auto-sizing on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1539
diff changeset
8631 /* Special case for scrolled windows */
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
8632 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
8633 {
1561
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8634 gint scrolledwidth = 0, scrolledheight = 0;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8635
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8636 /* Pre-run the calculation code for MLE/Container/Tree if needed */
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8637 if((width < 1 && !hsize) || (height < 1 && !vsize))
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8638 _get_scrolled_size(item, &scrolledwidth, &scrolledheight);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8639
1413
28210f7941c7 Safety checks for -1 parameter to dw_box_pack*() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8640 if(width > 0)
28210f7941c7 Safety checks for -1 parameter to dw_box_pack*() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8641 gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(item), width);
1539
b7136c130a66 Default scrolled items to 500x200 on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1528
diff changeset
8642 else if(!hsize)
1561
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8643 gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(item), scrolledwidth);
1413
28210f7941c7 Safety checks for -1 parameter to dw_box_pack*() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8644 if(height > 0)
28210f7941c7 Safety checks for -1 parameter to dw_box_pack*() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8645 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(item), height);
1539
b7136c130a66 Default scrolled items to 500x200 on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1528
diff changeset
8646 else if(!vsize)
1561
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8647 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(item), scrolledheight);
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
8648 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8649 else
1414
38c4484f5b90 Don't use natural size on GTK3 for entryfields, spinbuttons and comboboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1413
diff changeset
8650 {
1545
6edf3fce77f2 Initial support for container and MLE auto-sizing on GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1539
diff changeset
8651 /* Set the requested size of the widget */
1414
38c4484f5b90 Don't use natural size on GTK3 for entryfields, spinbuttons and comboboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1413
diff changeset
8652 if(width == -1 && (GTK_IS_COMBO_BOX(item) || GTK_IS_ENTRY(item)))
38c4484f5b90 Don't use natural size on GTK3 for entryfields, spinbuttons and comboboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1413
diff changeset
8653 gtk_widget_set_size_request(item, 150, height);
38c4484f5b90 Don't use natural size on GTK3 for entryfields, spinbuttons and comboboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1413
diff changeset
8654 else if(width == -1 && GTK_IS_SPIN_BUTTON(item))
38c4484f5b90 Don't use natural size on GTK3 for entryfields, spinbuttons and comboboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1413
diff changeset
8655 gtk_widget_set_size_request(item, 50, height);
38c4484f5b90 Don't use natural size on GTK3 for entryfields, spinbuttons and comboboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1413
diff changeset
8656 else
38c4484f5b90 Don't use natural size on GTK3 for entryfields, spinbuttons and comboboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1413
diff changeset
8657 gtk_widget_set_size_request(item, width, height);
38c4484f5b90 Don't use natural size on GTK3 for entryfields, spinbuttons and comboboxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1413
diff changeset
8658 }
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
8659 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
8660 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8661 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
8662 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
8663
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8664 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
8665 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8666 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
8667 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
8668 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8669 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
8670 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
8671 }
1669
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8672 /* If we previously incremented the reference count... drop it now that it is packed */
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8673 if(g_object_get_data(G_OBJECT(item), "_dw_refed"))
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8674 {
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8675 g_object_unref(G_OBJECT(item));
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8676 g_object_set_data(G_OBJECT(item), "_dw_refed", NULL);
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8677 }
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
8678 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8679 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
8680
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8681 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
8682 {
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8683 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
8684 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
8685 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
8686 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
8687 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8688 }
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8689
27e9a063fbb5 Committing initial version of dw_box_pack_at_index() for GTK2 and GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1076
diff changeset
8690 /*
1669
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8691 * Remove windows (widgets) from the box they are packed into.
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8692 * Parameters:
1679
e19b93a8229b More comment cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1678
diff changeset
8693 * handle: Window handle of the packed item to be removed.
1669
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8694 * Returns:
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8695 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8696 */
1769
d81bebc5c8cc Mark and I decided to change dw_box_remove*() to dw_box_unpack*() for consistency.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1747
diff changeset
8697 int API dw_box_unpack(HWND handle)
1669
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8698 {
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8699 int _locked_by_me = FALSE, retcode = DW_ERROR_GENERAL;
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8700
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8701 DW_MUTEX_LOCK;
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8702 if(GTK_IS_WIDGET(handle))
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8703 {
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8704 GtkWidget *box, *handle2 = handle;
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8705 GtkWidget *eventbox = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_eventbox");
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8706
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8707 /* Handle the invisible event box if it exists */
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8708 if(eventbox && GTK_IS_WIDGET(eventbox))
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8709 handle2 = eventbox;
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8710
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8711 /* Check if we are removing a widget from a box */
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8712 if((box = gtk_widget_get_parent(handle2)) && GTK_IS_GRID(box))
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8713 {
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8714 /* Get the number of items in the box... */
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8715 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8716
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8717 if(boxcount > 0)
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8718 {
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8719 /* Decrease the count by 1 */
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8720 boxcount--;
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8721 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount));
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8722 }
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8723 /* If we haven't incremented the reference count... raise it before removal */
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8724 if(!g_object_get_data(G_OBJECT(handle2), "_dw_refed"))
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8725 {
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8726 g_object_ref(G_OBJECT(handle2));
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8727 g_object_set_data(G_OBJECT(handle2), "_dw_refed", GINT_TO_POINTER(1));
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8728 }
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8729 /* Remove the widget from the box */
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8730 gtk_container_remove(GTK_CONTAINER(box), handle2);
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8731 retcode = DW_ERROR_NONE;
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8732 }
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8733 }
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8734 DW_MUTEX_UNLOCK;
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8735 return retcode;
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8736 }
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8737
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8738 /*
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8739 * Remove windows (widgets) from a box at an arbitrary location.
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8740 * Parameters:
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8741 * box: Window handle of the box to be removed from.
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8742 * index: 0 based index of packed items.
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8743 * Returns:
1679
e19b93a8229b More comment cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1678
diff changeset
8744 * Handle to the removed item on success, 0 on failure or padding.
1669
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8745 */
1769
d81bebc5c8cc Mark and I decided to change dw_box_remove*() to dw_box_unpack*() for consistency.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1747
diff changeset
8746 HWND API dw_box_unpack_at_index(HWND box, int index)
1669
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8747 {
1674
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8748 int _locked_by_me = FALSE;
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8749 HWND retval = 0;
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8750
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8751 DW_MUTEX_LOCK;
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8752 /* Check if we are removing a widget from a box */
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8753 if(GTK_IS_GRID(box))
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8754 {
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8755 /* Get the number of items in the box... */
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8756 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8757 int boxtype = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxtype"));
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8758 GtkWidget *item;
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8759
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8760 /* Fix the index by taking into account empty cells */
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8761 if(boxtype == DW_VERT)
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8762 {
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8763 int z;
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8764
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8765 for(z=0;z<index;z++)
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8766 {
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8767 if(!gtk_grid_get_child_at(GTK_GRID(box), 0, z))
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8768 index++;
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8769 }
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8770 item = gtk_grid_get_child_at(GTK_GRID(box), 0, index);
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8771 }
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8772 else
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8773 {
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8774 int z;
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8775
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8776 for(z=0;z<index;z++)
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8777 {
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8778 if(!gtk_grid_get_child_at(GTK_GRID(box), z, 0))
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8779 index++;
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8780 }
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8781 item = gtk_grid_get_child_at(GTK_GRID(box), index, 0);
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8782 }
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8783
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8784 if(boxcount > 0)
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8785 {
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8786 /* Decrease the count by 1 */
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8787 boxcount--;
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8788 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount));
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8789 }
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8790 /* If we haven't incremented the reference count... raise it before removal */
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8791 if(g_object_get_data(G_OBJECT(item), "_dw_padding"))
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8792 gtk_widget_destroy(item);
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8793 else
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8794 {
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8795 if(!g_object_get_data(G_OBJECT(item), "_dw_refed"))
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8796 {
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8797 g_object_ref(G_OBJECT(item));
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8798 g_object_set_data(G_OBJECT(item), "_dw_refed", GINT_TO_POINTER(1));
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8799 }
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8800 /* Remove the widget from the box */
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8801 gtk_container_remove(GTK_CONTAINER(box), item);
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8802 retval = item;
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8803 }
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8804 }
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8805 DW_MUTEX_UNLOCK;
923af93e4084 Implemented dw_box_remove_at_index() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1669
diff changeset
8806 return retval;
1669
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8807 }
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8808
36a090da4cb1 Initial implementation of dw_box_remove() for GTK2/3 and stub for dw_box_remove_at_index().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1656
diff changeset
8809 /*
1087
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8810 * 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
8811 * Parameters:
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8812 * box: Window handle of the box to be packed into.
1678
896f377a47c7 Added exports for building with MinGW on Windows and Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1674
diff changeset
8813 * item: Window handle of the item to pack.
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8814 * 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
8815 * 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
8816 * 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
8817 * 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
8818 * 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
8819 * 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
8820 */
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8821 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
8822 {
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8823 _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
8824 }
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8825
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8826 /*
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8827 * 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
8828 * Parameters:
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8829 * box: Window handle of the box to be packed into.
1678
896f377a47c7 Added exports for building with MinGW on Windows and Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1674
diff changeset
8830 * item: Window handle of the item to pack.
1087
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8831 * 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
8832 * 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
8833 * 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
8834 * 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
8835 * 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
8836 */
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8837 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
8838 {
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
8839 /* 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
8840 * 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
8841 */
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8842 _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
8843 }
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8844
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8845 /*
775
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 * 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
8847 * 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
8848 * box: Window handle of the box to be packed into.
1678
896f377a47c7 Added exports for building with MinGW on Windows and Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1674
diff changeset
8849 * item: Window handle of the item to pack.
775
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 * 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
8851 * 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
8852 * 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
8853 * 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
8854 * 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
8855 */
1087
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8856 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
8857 {
173e49c2270f Merge all 3 box packing functions into one internal function on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1081
diff changeset
8858 _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
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
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8861
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8862 union extents_union { guchar **gu_extents; unsigned long **extents; };
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8863 static GdkAtom extents_atom = 0;
1479
1d414e81a099 FIXME: Workaround on GTK for Compiz not sending property notify
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1477
diff changeset
8864 static time_t extents_time = 0;
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8865
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8866 static gboolean _dw_property_notify(GtkWidget *window, GdkEventProperty* event, GdkWindow *gdkwindow)
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8867 {
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8868 /* Check to see if we got a property change */
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8869 if(event->state == GDK_PROPERTY_NEW_VALUE && event->atom == extents_atom && event->window == gdkwindow)
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8870 extents_time = 0;
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8871 return FALSE;
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8872 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8873
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8874 /* Internal function to figure out the frame extents of an unmapped window */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8875 void _dw_get_frame_extents(GtkWidget *window, int *vert, int *horz)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8876 {
1482
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8877 if(gtk_window_get_decorated(GTK_WINDOW(window)))
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8878 {
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8879 const char *request = "_NET_REQUEST_FRAME_EXTENTS";
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8880 unsigned long *extents = NULL;
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8881 union extents_union eu;
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8882 GdkAtom request_extents = gdk_atom_intern(request, FALSE);
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8883 GdkWindow *gdkwindow = gtk_widget_get_window(window);
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8884 GdkDisplay *display = gtk_widget_get_display(window);
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8885
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8886 if(!extents_atom)
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8887 extents_atom = gdk_atom_intern("_NET_FRAME_EXTENTS", FALSE);
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8888
1482
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8889 /* Set some rational defaults.. just in case */
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8890 *vert = 28;
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8891 *horz = 12;
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8892
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8893 /* See if the current window manager supports _NET_REQUEST_FRAME_EXTENTS */
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8894 if(gdk_x11_screen_supports_net_wm_hint(gdk_screen_get_default(), request_extents))
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8895 {
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8896 Display *xdisplay = GDK_DISPLAY_XDISPLAY(display);
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8897 GdkWindow *root_window = gdk_get_default_root_window();
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8898 Window xroot_window = GDK_WINDOW_XID(root_window);
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8899 Atom extents_request_atom = gdk_x11_get_xatom_by_name_for_display(display, request);
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8900 unsigned long window_id = GDK_WINDOW_XID(gdkwindow);
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8901 XEvent xevent = {0};
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8902 time_t currtime;
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8903 gulong connid;
1482
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8904
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8905 xevent.xclient.type = ClientMessage;
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8906 xevent.xclient.message_type = extents_request_atom;
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8907 xevent.xclient.display = xdisplay;
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8908 xevent.xclient.window = window_id;
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8909 xevent.xclient.format = 32;
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8910
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8911 /* Send the property request */
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8912 XSendEvent(xdisplay, xroot_window, False,
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8913 (SubstructureRedirectMask | SubstructureNotifyMask),
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8914 &xevent);
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8915
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8916 /* Connect a signal to look for the property change */
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8917 connid = g_signal_connect(G_OBJECT(window), "property_notify_event", G_CALLBACK(_dw_property_notify), gdkwindow);
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8918
1482
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8919 /* Record the request time */
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8920 time(&extents_time);
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8921
1482
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8922 /* Look for the property notify event */
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8923 do
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8924 {
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8925 dw_main_iteration();
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8926 time(&currtime);
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8927 }
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8928 while(currtime - extents_time < 2);
1482
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8929
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8930 /* Remove the signal handler now that we are done */
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8931 g_signal_handler_disconnect(G_OBJECT(window), connid);
1482
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8932 }
1479
1d414e81a099 FIXME: Workaround on GTK for Compiz not sending property notify
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1477
diff changeset
8933
1482
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8934 /* Attempt to retrieve window's frame extents. */
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8935 eu.extents = &extents;
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8936 if(gdk_property_get(gdkwindow,
1510
218c85939040 Ported fixes in previous commit from GTK2 to GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1506
diff changeset
8937 extents_atom,
1482
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8938 gdk_atom_intern("CARDINAL", FALSE),
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8939 0, sizeof(unsigned long)*4, FALSE,
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8940 NULL, NULL, NULL, eu.gu_extents))
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8941 {
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8942 *horz = extents[0] + extents[1];
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8943 *vert = extents[2] + extents[3];
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8944 }
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8945 }
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8946 else
dd584f431f9f Even better workaround to Compiz bug on GTK... it only seems to happen
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1481
diff changeset
8947 *horz = *vert = 0;
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8948 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8949
775
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 * 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
8952 * 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
8953 * 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
8954 * 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
8955 * 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
8956 */
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 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
8958 {
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 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
8960
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8961 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
8962 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
8963
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 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
8965 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
8966 {
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8967 GdkWindow *window = gtk_widget_get_window(handle);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8968 int cx = 0, cy = 0;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8969
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8970 /* Window is mapped query the frame size directly */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8971 if(window && gtk_widget_get_mapped(handle))
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8972 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8973 GdkRectangle frame;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8974 gint gwidth, gheight;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8975
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8976 /* Calculate the border size */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8977 gdk_window_get_frame_extents(window, &frame);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8978 gdk_window_get_geometry(window, NULL, NULL, &gwidth, &gheight);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8979
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8980 cx = frame.width - gwidth;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8981 if(cx < 0)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8982 cx = 0;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8983 cy = frame.height - gheight;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8984 if(cy < 0)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8985 cy = 0;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8986 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8987 else
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8988 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8989 /* Check if we have cached frame size values */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8990 if(!((cx = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_frame_width"))) |
1471
26dbd11399d6 Don't attempt to set windows to an invalid size on GTK when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1470
diff changeset
8991 (cy = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_frame_height")))))
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8992 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8993 /* If not try to ask the window manager for the estimated size...
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8994 * and finally if all else fails, guess.
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8995 */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8996 _dw_get_frame_extents(handle, &cy, &cx);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8997 /* Cache values for later use */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8998 g_object_set_data(G_OBJECT(handle), "_dw_frame_width", GINT_TO_POINTER(cx));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
8999 g_object_set_data(G_OBJECT(handle), "_dw_frame_height", GINT_TO_POINTER(cy));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9000 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9001 /* Save the size for when it is shown */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9002 g_object_set_data(G_OBJECT(handle), "_dw_width", GINT_TO_POINTER(width));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9003 g_object_set_data(G_OBJECT(handle), "_dw_height", GINT_TO_POINTER(height));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9004 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9005 /* Resize minus the border size */
1471
26dbd11399d6 Don't attempt to set windows to an invalid size on GTK when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1470
diff changeset
9006 if(width > cx && height > cy)
26dbd11399d6 Don't attempt to set windows to an invalid size on GTK when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1470
diff changeset
9007 {
26dbd11399d6 Don't attempt to set windows to an invalid size on GTK when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1470
diff changeset
9008 gtk_window_resize(GTK_WINDOW(handle), width - cx , height - cy );
26dbd11399d6 Don't attempt to set windows to an invalid size on GTK when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1470
diff changeset
9009 gtk_window_set_default_size(GTK_WINDOW(handle), width - cx, height - cy);
26dbd11399d6 Don't attempt to set windows to an invalid size on GTK when
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1470
diff changeset
9010 }
775
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 }
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 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
9013 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
9014 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
9015 }
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
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 /*
1429
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9018 * Gets the size the system thinks the widget should be.
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9019 * Parameters:
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9020 * handle: Window handle of the item to be back.
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9021 * width: Width in pixels of the item or NULL if not needed.
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9022 * height: Height in pixels of the item or NULL if not needed.
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9023 */
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9024 void API dw_window_get_preferred_size(HWND handle, int *width, int *height)
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9025 {
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9026 int _locked_by_me = FALSE;
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9027
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9028 DW_MUTEX_LOCK;
1561
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9029 if(GTK_IS_SCROLLED_WINDOW(handle))
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9030 {
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9031 gint scrolledwidth, scrolledheight;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9032
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9033 _get_scrolled_size(handle, &scrolledwidth, &scrolledheight);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9034
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9035 if(width)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9036 *width = scrolledwidth;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9037 if(height)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9038 *height = scrolledheight;
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9039 }
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9040 else
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9041 {
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9042 if(width)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9043 gtk_widget_get_preferred_width(handle, NULL, width);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9044 if(height)
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9045 gtk_widget_get_preferred_height(handle, NULL, height);
46e34bd92336 Implemented guessing size of MLE on GTK... not as accurate as the other platforms...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
9046 }
1429
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9047 DW_MUTEX_UNLOCK;
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9048 }
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9049
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1426
diff changeset
9050 /*
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9051 * 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
9052 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9053 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
9054 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9055 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
9056 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
9057
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9058 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
9059 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
9060 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
9061 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
9062 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9063
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9064 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9065 * 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
9066 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9067 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
9068 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9069 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
9070 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
9071
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9072 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
9073 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
9074 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
9075 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
9076 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9077
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9078 /* 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
9079 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
9080 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9081 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
9082 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
9083 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
9084
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9085 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
9086 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
9087 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
9088 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
9089 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
9090 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9091
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9092 /*
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9093 * Sets the gravity of a given window (widget).
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9094 * Gravity controls which corner of the screen and window the position is relative to.
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9095 * Parameters:
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9096 * handle: Window (widget) handle.
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9097 * horz: DW_GRAV_LEFT (default), DW_GRAV_RIGHT or DW_GRAV_CENTER.
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9098 * vert: DW_GRAV_TOP (default), DW_GRAV_BOTTOM or DW_GRAV_CENTER.
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9099 */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9100 void API dw_window_set_gravity(HWND handle, int horz, int vert)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9101 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9102 dw_window_set_data(handle, "_dw_grav_horz", DW_INT_TO_POINTER(horz));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9103 dw_window_set_data(handle, "_dw_grav_vert", DW_INT_TO_POINTER(vert));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9104 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9105
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9106 /*
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9107 * 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
9108 * 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
9109 * 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
9110 * 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
9111 * 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
9112 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9113 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
9114 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9115 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
9116 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
9117
1121
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
9118 if(!handle)
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
9119 return;
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
9120
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9121 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
9122 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
9123 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9124 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
9125 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9126 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
9127 {
1121
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
9128 GdkWindow *window = NULL;
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
9129
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
9130 if(GTK_IS_WINDOW(handle))
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9131 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9132 GdkWindow *window = gtk_widget_get_window(handle);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9133 int horz = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_grav_horz"));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9134 int vert = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_grav_vert"));
1476
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9135 int cx = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_frame_width"));
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9136 int cy = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_frame_height"));
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9137 int newx = x, newy = y, width = 0, height = 0;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9138
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9139 /* If the window is mapped */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9140 if(window && gtk_widget_get_mapped(handle))
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9141 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9142 /* If we need the width or height... */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9143 if(horz || vert)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9144 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9145 GdkRectangle frame;
1476
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9146 int count = 0;
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9147
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9148 /* Get the frame size */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9149 gdk_window_get_frame_extents(window, &frame);
1476
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9150
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9151 /* FIXME: Sometimes we get returned an invalid 200x200
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9152 * result... so if we get this... try the call a second
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9153 * time and hope for a better result.
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9154 */
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9155 while((frame.width == 200 || frame.width == (200 + cx)) &&
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9156 (frame.height == 200 || frame.height == (200 + cy)) && count < 10)
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9157 {
1505
fcdd9e3c735a Use _dw_msleep() insetad of dw_main_sleep() when pausing to get the frame extents
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1501
diff changeset
9158 _dw_msleep(1);
1476
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9159 count++;
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9160 gdk_window_get_frame_extents(window, &frame);
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9161 }
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9162 width = frame.width;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9163 height = frame.height;
1470
a317c2ec1d4c On GTK2 gtk_window_move() needs to be called after mapping the window...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1469
diff changeset
9164 }
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9165 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9166 else
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9167 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9168 /* Check if we have cached frame size values */
1476
d76a36c9cff1 FIXME: Hacky fix to gdk_window_get_frame_extents() on GTK3 returning bogus
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1472
diff changeset
9169 if(!(cx | cy))
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9170 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9171 /* If not try to ask the window manager for the estimated size...
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9172 * and finally if all else fails, guess.
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9173 */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9174 _dw_get_frame_extents(handle, &cy, &cx);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9175 /* Cache values for later use */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9176 g_object_set_data(G_OBJECT(handle), "_dw_frame_width", GINT_TO_POINTER(cx));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9177 g_object_set_data(G_OBJECT(handle), "_dw_frame_height", GINT_TO_POINTER(cy));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9178 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9179 /* Save the positions for when it is shown */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9180 g_object_set_data(G_OBJECT(handle), "_dw_x", GINT_TO_POINTER(x));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9181 g_object_set_data(G_OBJECT(handle), "_dw_y", GINT_TO_POINTER(y));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9182 g_object_set_data(G_OBJECT(handle), "_dw_pos", GINT_TO_POINTER(1));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9183 /* Check to see if there is a pending size request too */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9184 width = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_width"));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9185 height = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), "_dw_height"));
1470
a317c2ec1d4c On GTK2 gtk_window_move() needs to be called after mapping the window...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1469
diff changeset
9186 if(!width || !height)
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9187 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9188 /* Ask what GTK is planning on suggesting for the window size */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9189 gtk_window_get_size(GTK_WINDOW(handle), !width ? &width : NULL, !height ? &height : NULL);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9190 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9191 /* Add the frame size to it */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9192 width += cx;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9193 height += cy;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9194 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9195 /* Do any gravity calculations */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9196 if(horz || vert)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9197 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9198 /* Handle horizontal center gravity */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9199 if((horz & 0xf) == DW_GRAV_CENTER)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9200 newx += ((gdk_screen_width() / 2) - (width / 2));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9201 /* Handle right gravity */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9202 else if((horz & 0xf) == DW_GRAV_RIGHT)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9203 newx = gdk_screen_width() - width - x;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9204 /* Handle vertical center gravity */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9205 if((vert & 0xf) == DW_GRAV_CENTER)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9206 newy += ((gdk_screen_height() / 2) - (height / 2));
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9207 else if((vert & 0xf) == DW_GRAV_BOTTOM)
1472
1794caee0758 Initial versions of dw_window_set_gravity for Windows and OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1471
diff changeset
9208 newy = gdk_screen_height() - height - y;
1499
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9209
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
9210 #if GTK_CHECK_VERSION(3,3,8)
1499
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9211 /* Adjust the values to avoid Gnome bar if requested */
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9212 if((horz | vert) & DW_GRAV_OBSTACLES)
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9213 {
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9214 GdkRectangle rect;
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9215 GdkScreen *screen = gdk_screen_get_default();
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9216
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9217 gdk_screen_get_monitor_workarea(screen, 0, &rect);
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9218
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9219 if(horz & DW_GRAV_OBSTACLES)
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9220 {
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9221 if((horz & 0xf) == DW_GRAV_LEFT)
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9222 newx += rect.x;
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9223 else if((horz & 0xf) == DW_GRAV_RIGHT)
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9224 newx -= dw_screen_width() - (rect.x + rect.width);
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9225 }
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9226 if(vert & DW_GRAV_OBSTACLES)
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9227 {
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9228 if((vert & 0xf) == DW_GRAV_TOP)
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9229 newy += rect.y;
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9230 else if((vert & 0xf) == DW_GRAV_BOTTOM)
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9231 newy -= dw_screen_height() - (rect.y + rect.height);
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9232 }
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9233 }
97e5e8688fe1 Added gravity obstacle support for GTK 3.4 and later.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1491
diff changeset
9234 #endif
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9235 }
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9236 /* Finally move the window into place */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9237 gtk_window_move(GTK_WINDOW(handle), newx, newy);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9238 }
1121
fb92778105b2 Fixes some major window positioning problems in GTK3...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1118
diff changeset
9239 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
9240 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
9241 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9242 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
9243 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9244
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9245 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9246 * 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
9247 * 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
9248 * 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
9249 * 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
9250 * 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
9251 * 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
9252 * 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
9253 */
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 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
9255 {
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9256 dw_window_set_size(handle, width, height);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9257 dw_window_set_pos(handle, 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
9258 }
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 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9261 * 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
9262 * 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
9263 * 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
9264 * 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
9265 * 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
9266 * 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
9267 * 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
9268 */
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 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
9270 {
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 int _locked_by_me = FALSE;
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9272 gint gx = 0, gy = 0, gwidth = 0, gheight = 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
9273 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
9274
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9275 DW_MUTEX_LOCK;
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9276 /* If it is an MDI window query what we can */
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9277 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
9278 {
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9279 gtk_mdi_get_pos(GTK_MDI(mdi), handle, &gx, &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
9280 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9281 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
9282 {
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9283 GdkWindow *window;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9284
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9285 /* Can only query if the window is realized */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9286 if(handle && (window = gtk_widget_get_window(handle)))
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9287 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9288 /* If it is a toplevel 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
9289 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
9290 {
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9291 if(gtk_widget_get_mapped(handle))
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9292 {
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9293 GdkRectangle frame;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9294
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9295 /* Calculate the border rectangle */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9296 gdk_window_get_frame_extents(window, &frame);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9297 gx = frame.x;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9298 gy = frame.y;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9299 gwidth = frame.width;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9300 gheight = frame.height;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9301 }
775
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 }
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 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
9304 {
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9305 /* Get an individual widget coordinates */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9306 gdk_window_get_geometry(window, &gx, &gy, &gwidth, &gheight);
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9307 gdk_window_get_root_origin(window, &gx, &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
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 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9310 }
1469
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9311 /* Fill in the requested fields */
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9312 if(x)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9313 *x = gx;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9314 if(y)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9315 *y = gy;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9316 if(width)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9317 *width = gwidth;
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9318 if(height)
b9efb744cfbd Second try and window positioning for GTK2 and port to GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1463
diff changeset
9319 *height = gheight;
775
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 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
9321 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9322
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9323 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9324 * 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
9325 * 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
9326 * 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
9327 * 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
9328 * 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
9329 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9330 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
9331 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9332 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
9333 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
9334
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9335 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
9336 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
9337 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9338 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
9339 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
9340 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
9341 }
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 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
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 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
9345 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
9346 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
9347 }
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 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
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 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
9351 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9352 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
9353 {
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 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
9355 }
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 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
9357 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9358 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
9359 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9360 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9361 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9362 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
9363 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9364 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
9365 /* 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
9366 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
9367 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
9368 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
9369 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
9370 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
9371 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
9372 /* 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
9373 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
9374 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
9375 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
9376 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
9377 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
9378 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
9379 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
9380 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
9381 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
9382 }
1314
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9383 if ( GTK_IS_CHECK_MENU_ITEM(handle2) && (mask & (DW_MIS_CHECKED | DW_MIS_UNCHECKED)) )
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9384 {
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9385 int check = 0;
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9386
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9387 if ( style & DW_MIS_CHECKED )
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9388 check = 1;
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9389
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9390 _dw_ignore_click = 1;
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9391 if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(handle2)) != check)
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9392 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(handle2), check);
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9393 _dw_ignore_click = 0;
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9394 }
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9395 if ( (GTK_IS_CHECK_MENU_ITEM(handle2) || GTK_IS_MENU_ITEM(handle2)) && (mask & (DW_MIS_ENABLED | DW_MIS_DISABLED) ))
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9396 {
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9397 _dw_ignore_click = 1;
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9398 if ( style & DW_MIS_ENABLED )
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9399 gtk_widget_set_sensitive( handle2, TRUE );
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9400 else
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9401 gtk_widget_set_sensitive( handle2, FALSE );
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9402 _dw_ignore_click = 0;
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1308
diff changeset
9403 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9404 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
9405 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9406
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9407 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9408 * 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
9409 * 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
9410 * 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
9411 * 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
9412 * 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
9413 */
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 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
9415 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9416 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
9417 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
9418 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
9419
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9420 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
9421 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
9422
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9423 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
9424 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9425 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
9426 {
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 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
9428 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
9429 char text[101] = {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
9430 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
9431
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9432 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
9433 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
9434
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
9435 snprintf(text, 100, "_dw_page%d", 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
9436 /* 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
9437 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
9438 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
9439 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
9440 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9441 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9442 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9443 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
9444
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9445 /* 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
9446 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
9447 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9448
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9449 /* 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
9450 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
9451 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9452 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
9453 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
9454
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9455 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
9456 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9457 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
9458 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9459 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
9460 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9461 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
9462 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
9463 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9464 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9465 }
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 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
9467 }
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 * 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
9471 * 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
9472 * 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
9473 * 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
9474 */
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 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
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 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
9478 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
9479
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9480 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
9481 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
9482 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
9483 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9484 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
9485 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
9486 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
9487 }
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 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
9489 }
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9491 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9492 * 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
9493 * 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
9494 * 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
9495 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9496 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
9497 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9498 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
9499 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
9500
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9501 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
9502 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
9503 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
9504 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
9505 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
9506 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9507
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9508 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9509 * 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
9510 * 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
9511 * 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
9512 * 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
9513 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9514 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
9515 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9516 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
9517
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9518 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
9519 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
9520 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
9521 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
9522 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
9523 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9524
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9525
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9526 /*
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 * 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
9528 * 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
9529 * 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
9530 * 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
9531 * 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
9532 */
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 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
9534 {
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 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
9536 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
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 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
9539 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
9540 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
9541 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
9542 char ptext[101] = {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
9543 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
9544
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
9545 snprintf(ptext, 100, "_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
9546 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
9547 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
9548 }
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9550 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
9551 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9552 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
9553 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
9554 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
9555 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9556 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
9557 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9558
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9559 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9560 * 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
9561 * 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
9562 * 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
9563 * 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
9564 * 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
9565 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9566 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
9567 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9568 /* 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
9569 }
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 * 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
9573 * 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
9574 * 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
9575 * 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
9576 * 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
9577 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9578 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
9579 {
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 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
9581 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
9582 int num, z, realpage = -1, pad, _locked_by_me = FALSE;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
9583 char ptext[101] = {0};
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
9584
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
9585 DW_MUTEX_LOCK;
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
9586 snprintf(ptext, 100, "_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
9587 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
9588 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
9589 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
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 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
9592 {
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 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
9594 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
9595 }
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
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 /* 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
9598 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
9599 {
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 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
9601 {
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 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
9603 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
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 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
9606 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
9607 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
9608 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
9609 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
9610 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
9611 }
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 }
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 }
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
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 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
9616
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 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
9618
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
9619 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
9620 {
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
9621 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
9622 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
9623 }
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
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 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
9626 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
9627 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
9628 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
9629 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
9630 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
9631 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
9632 }
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
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 /*
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 * 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
9636 * 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
9637 * 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
9638 * 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
9639 */
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 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
9641 {
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
9642 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
9643 }
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 * 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
9647 * 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
9648 * 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
9649 * 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
9650 * 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
9651 * 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
9652 */
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 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
9654 {
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 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
9656 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
9657 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
9658
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
9659 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
9660 /* 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
9661 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
9662 {
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
9663 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
9664 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
9665 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
9666 }
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
9667 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
9668 {
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
9669 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9670
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
9671 /* 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
9672 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
9673 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
9674 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
9675 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
9676
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
9677 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
9678 {
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
9679 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
9680 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
9681 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9682
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
9683 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
9684 {
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
9685 /* 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
9686 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
9687 }
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
9688 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
9689 {
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
9690 /* 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
9691 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
9692 }
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
9693 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
9694 }
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
9695 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
9696 }
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
9697
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
9698 /*
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
9699 * 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
9700 * 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
9701 * 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
9702 * 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
9703 * 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
9704 */
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
9705 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
9706 {
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
9707 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
9708 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
9709 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
9710
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
9711 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
9712 /* 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
9713 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
9714 {
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
9715 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
9716 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
9717 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
9718 }
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
9719 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
9720 {
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
9721 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
9722 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9723
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
9724 /* 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
9725 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
9726 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
9727 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
9728 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
9729
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
9730 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
9731 {
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
9732 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
9733 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
9734 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9735
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
9736 /* 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
9737 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
9738 {
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
9739 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
9740 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
9741 }
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
9742 }
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
9743 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
9744 }
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
9745
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
9746 /*
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
9747 * 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
9748 * 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
9749 * 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
9750 */
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
9751 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
9752 {
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
9753 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
9754 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
9755 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
9756
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9757 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
9758 /* 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
9759 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
9760 {
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 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
9762 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
9763 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
9764 }
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
9765 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
9766 {
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9767 /* 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
9768 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
9769 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
9770 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
9771 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
9772
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
9773 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
9774 {
c0e7200dad31 More work on comboboxes, listboxes and containers. Comboboxes now display the list properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 775
diff changeset
9775 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
9776 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
9777 }
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
9778 /* Clear the list */
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9779 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
9780 }
775
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 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
9782 }
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 /*
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 * 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
9786 * 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
9787 * 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
9788 */
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 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
9790 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9791 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
9792 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
9793 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
9794 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
9795
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
9796 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
9797 /* 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
9798 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
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 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
9801 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
9802 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
9803 }
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
9804 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
9805 {
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
9806 /* 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
9807 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
9808 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
9809 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
9810 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
9811
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
9812 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
9813 {
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
9814 /* 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
9815 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
9816 }
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
9817 }
775
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 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
9819 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
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 /*
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 * 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
9824 * 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
9825 * 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
9826 * 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
9827 */
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 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
9829 {
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 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
9831 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
9832
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 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
9834 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
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 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
9837 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
9838 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
9839 }
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9840 /* 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
9841 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
9842 {
1330
c63069148357 Mostly fixed dw_listbox_set_top() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1327
diff changeset
9843 GtkAdjustment *adjust = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(handle));
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9844 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
9845
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9846 if(store && adjust)
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9847 {
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9848 /* 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
9849 gint rowcount = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
1330
c63069148357 Mostly fixed dw_listbox_set_top() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1327
diff changeset
9850 gdouble pagesize = gtk_adjustment_get_page_size(adjust);
c63069148357 Mostly fixed dw_listbox_set_top() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1327
diff changeset
9851 gdouble upper = gtk_adjustment_get_upper(adjust) - pagesize;
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9852 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
9853 gdouble change;
1330
c63069148357 Mostly fixed dw_listbox_set_top() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1327
diff changeset
9854
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9855 /* Safety check */
1330
c63069148357 Mostly fixed dw_listbox_set_top() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1327
diff changeset
9856 if(rowcount < 2)
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9857 {
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9858 DW_MUTEX_UNLOCK;
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9859 return;
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9860 }
1330
c63069148357 Mostly fixed dw_listbox_set_top() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1327
diff changeset
9861
c63069148357 Mostly fixed dw_listbox_set_top() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1327
diff changeset
9862 /* Verify the range */
c63069148357 Mostly fixed dw_listbox_set_top() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1327
diff changeset
9863 rowcount--;
c63069148357 Mostly fixed dw_listbox_set_top() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1327
diff changeset
9864 if(top > rowcount)
c63069148357 Mostly fixed dw_listbox_set_top() on GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1327
diff changeset
9865 top = rowcount;
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9866
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9867 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
9868
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9869 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
9870 }
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
9871 }
775
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 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
9873 }
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
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 /*
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 * 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
9877 * 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
9878 * 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
9879 * 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
9880 * 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
9881 * 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
9882 */
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 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
9884 {
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 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
9886 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
9887 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
9888
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
9889 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
9890 /* 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
9891 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
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 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
9894 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
9895 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
9896 }
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
9897 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
9898 {
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
9899 /* 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
9900 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
9901 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
9902 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
9903 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
9904
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9905 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
9906 {
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
9907 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9908
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9909 /* 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
9910 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
9911 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9912 /* Get the text */
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9913 gchar *text;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9914 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
9915 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
9916 DW_MUTEX_UNLOCK;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9917 return;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9918 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9919 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9920 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9921 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
9922 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
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
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 * 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
9927 * 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
9928 * 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
9929 * 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
9930 * 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
9931 */
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 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
9933 {
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 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
9935 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
9936 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
9937
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
9938 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
9939 /* 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
9940 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
9941 {
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 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
9943 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
9944 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
9945 }
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
9946 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
9947 {
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
9948 /* 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
9949 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
9950 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
9951 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
9952 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
9953
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9954 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
9955 {
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
9956 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
9957
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9958 /* 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
9959 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
9960 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9961 /* Update the text */
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
9962 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
9963 }
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
9964 }
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
9965 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9966 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
9967 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9968
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9969 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9970 * 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
9971 * 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
9972 * 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
9973 * 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
9974 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9975 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
9976 {
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
9977 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
9978 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
9979 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
9980 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
9981
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9982 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
9983 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
9984
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
9985 /* 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
9986 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
9987 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
9988
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
9989 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
9990 {
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
9991 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
9992 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
9993
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
9994 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
9995 {
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
9996 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
9997 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
9998
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
9999 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
10000 {
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
10001 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
10002
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
10003 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
10004 {
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
10005 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
10006 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
10007 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10008
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
10009 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
10010 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
10011 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10012
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
10013 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
10014 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
10015 }
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
10016 }
1124
aff4aeca858f Experimental change to use GtkGrid instead of GtkTable for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1122
diff changeset
10017 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
10018 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
10019 }
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 /*
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 * 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
10023 * 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
10024 * 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
10025 */
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
10026 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
10027 {
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 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
10029 GtkListStore *store = NULL;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10030 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
10031 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
10032
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10033 DW_MUTEX_LOCK;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10034 /* 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
10035 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
10036 {
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 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
10038 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
10039 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
10040 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10041 if(handle2)
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10042 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10043 /* 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
10044 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
10045 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
10046 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
10047 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
10048
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10049 if(store)
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10050 {
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
10051 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
10052 {
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
10053 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
10054 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
10055 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
10056 {
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
10057 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
10058 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
10059
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
10060 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
10061 {
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
10062 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
10063 }
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10064
780
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
10065 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
10066 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
10067 }
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
10068 }
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
10069 else
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
10070 {
fda93b441c4d Lots of listbox/combobox/container fixes. Things are starting to come together.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 779
diff changeset
10071 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
10072 GtkTreePath *path;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10073
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
10074 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
10075 {
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
10076 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
10077 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
10078 {
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
10079 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
10080
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
10081 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
10082 {
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
10083 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
10084 }
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
10085 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
10086 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10087 }
775
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 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10089 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10090 }
775
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 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
10092 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
10093 }
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 /*
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 * 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
10097 * 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
10098 * 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
10099 * 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
10100 * 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
10101 */
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 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
10103 {
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 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
10105 GtkListStore *store = NULL;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10106 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
10107
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10108 DW_MUTEX_LOCK;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10109 /* 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
10110 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
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 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
10113 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
10114 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
10115 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10116 if(handle2)
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10117 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10118 /* 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
10119 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
10120 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
10121 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
10122 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
10123
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10124 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
10125 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10126 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10127
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10128 /* 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
10129 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
10130 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
10131 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
10132 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
10133 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
10134 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10135 else
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10136 {
787
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
10137 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
10138 if(state)
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
10139 {
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
10140 /* 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
10141 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
10142 }
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
10143 else
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
10144 {
098458f3bdfb Fixes some missing checks for combobox causing GTK warnings running HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 786
diff changeset
10145 /* 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
10146 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
10147 }
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10148 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10149 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10150 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10151 }
775
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 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
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
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 /*
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 * 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
10157 * 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
10158 * 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
10159 * 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
10160 */
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 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
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 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
10164 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
10165 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
10166
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
10167 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
10168 /* 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
10169 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
10170 {
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 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
10172 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
10173 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
10174 }
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
10175 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
10176 {
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
10177 /* 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
10178 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
10179 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
10180 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
10181 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
10182
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
10183 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
10184 {
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
10185 GtkTreeIter iter;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10186
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10187 /* 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
10188 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
10189 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
10190 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
10191 }
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
10192 }
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
10193 }
775
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 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
10195 }
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
1353
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10197 /* Function to do delayed positioning */
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10198 gboolean _splitbar_set_percent(gpointer data)
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10199 {
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10200 GtkWidget *widget = data;
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10201 float *percent = (float *)g_object_get_data(G_OBJECT(widget), "_dw_percent");
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10202
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10203 if(percent)
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10204 {
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10205 GtkAllocation alloc;
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10206
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10207 gtk_widget_get_allocation(widget, &alloc);
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10208
1583
525c4c9d04c6 After switching to non-deprecated functions in GTK3 like...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1579
diff changeset
10209 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(widget)) == GTK_ORIENTATION_HORIZONTAL)
1353
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10210 gtk_paned_set_position(GTK_PANED(widget), (int)(alloc.width * (*percent / 100.0)));
1583
525c4c9d04c6 After switching to non-deprecated functions in GTK3 like...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1579
diff changeset
10211 else
1353
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10212 gtk_paned_set_position(GTK_PANED(widget), (int)(alloc.height * (*percent / 100.0)));
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10213 g_object_set_data(G_OBJECT(widget), "_dw_percent", NULL);
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10214 free(percent);
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10215 }
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10216 return FALSE;
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10217 }
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10218
775
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 /* 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
10220 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
10221 {
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 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
10223
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 /* 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
10225 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
10226 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
10227
1353
f4ad4ba39b61 Apparently it is unsafe to set properties in the GTK3 size allocate callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1352
diff changeset
10228 g_idle_add(_splitbar_set_percent, 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
10229 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
10230 }
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 /*
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 * 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
10234 * 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
10235 * 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
10236 * 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
10237 * 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
10238 * 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
10239 * 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
10240 */
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 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
10242 {
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 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
10244 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
10245 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
10246
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 DW_MUTEX_LOCK;
1575
58ed65820baf Eliminate even more deprecated APIs for GTK3... still more to go.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
10248 tmp = gtk_paned_new(type == DW_HORZ ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL);
1125
95d7eb4e85c6 The shrink flag on GtkPanded (splitbar) in GTK 3 causes tons
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1124
diff changeset
10249 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
10250 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
10251 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
10252 *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
10253 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
10254 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
10255 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
10256 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
10257 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
10258 }
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
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 * 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
10262 * 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
10263 * 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
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 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
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 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
10268 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
10269
1583
525c4c9d04c6 After switching to non-deprecated functions in GTK3 like...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1579
diff changeset
10270 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(handle)) == GTK_ORIENTATION_HORIZONTAL)
525c4c9d04c6 After switching to non-deprecated functions in GTK3 like...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1579
diff changeset
10271 size = gtk_widget_get_allocated_width(handle);
525c4c9d04c6 After switching to non-deprecated functions in GTK3 like...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1579
diff changeset
10272 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
10273 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
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 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
10276 *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
10277
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 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
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 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
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 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
10283 }
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
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 * 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
10288 * 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
10289 * 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
10290 */
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 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
10292 {
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 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
10294
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 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
10296 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
10297 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
10298 }
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
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 * 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
10302 * 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
10303 * 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
10304 * 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
10305 * 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
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 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
10308 {
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 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
10310 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
10311 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
10312 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
10313 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
10314
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 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
10316 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
10317 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
10318 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
10319 /* 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
10320 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
10321 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
10322 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
10323 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
10324 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
10325 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
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 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
10328 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
10329 }
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
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 * 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
10333 * 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
10334 * 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
10335 * 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
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 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
10338 {
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 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
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 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
10342 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
10343 {
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 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
10345 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
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 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
10348 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
10349 }
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 /*
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 * 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
10353 * 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
10354 * 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
10355 */
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 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
10357 {
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 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
10359
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 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
10361 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
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 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
10364 *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
10365 }
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 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
10367 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
10368 }
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
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 /*
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10371 * Sets the current focus item for a window/dialog.
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10372 * Parameters:
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10373 * handle: Handle to the dialog item to be focused.
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10374 * Remarks:
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10375 * This is for use after showing the window/dialog.
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10376 */
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10377 void API dw_window_set_focus(HWND handle)
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10378 {
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10379 int _locked_by_me = FALSE;
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10380
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10381 if(!handle)
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10382 return;
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10383
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10384 DW_MUTEX_LOCK;
1796
7f549994b633 Fixed tabs put in by TextMate 2... had to figure out how turn
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10385 gtk_widget_grab_focus(handle);
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10386 DW_MUTEX_UNLOCK;
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10387 }
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10388
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10389 /*
775
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 * 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
10391 * 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
10392 * 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
10393 * defaultitem: Handle to the dialog item to be default.
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10394 * Remarks:
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1793
diff changeset
10395 * This is for use before showing the window/dialog.
775
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 */
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 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
10398 {
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 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
10400
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 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
10402 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
10403
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 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
10405 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
10406 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
10407 }
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
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 /*
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 * 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
10411 * 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
10412 * 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
10413 * 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
10414 */
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 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
10416 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10417 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
10418
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10419 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
10420 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
10421
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10422 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
10423 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
10424 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
10425 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10426
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10427 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10428 * 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
10429 * 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
10430 * 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
10431 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10432 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
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 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
10435 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
10436 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
10437
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 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
10439 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
10440 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
10441
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10442 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
10443
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10444 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
10445
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10446 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
10447 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
10448 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
10449 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
10450 #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
10451 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
10452 #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
10453 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
10454 #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
10455
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10456 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
10457 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10458 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
10459 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10460 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
10461 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
10462 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
10463 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
10464 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10465 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10466 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
10467 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
10468 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10469
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10470 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10471 * 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
10472 * 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
10473 * 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
10474 * 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
10475 * 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
10476 * 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
10477 * 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
10478 * 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
10479 * 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
10480 *
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10481 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10482 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
10483 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10484 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
10485
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10486 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
10487 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
10488 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
10489 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
10490 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
10491 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
10492 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
10493
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10494 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
10495 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10496 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
10497 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
10498 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
10499 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
10500 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
10501 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
10502 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
10503 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
10504 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
10505 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
10506 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
10507 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
10508 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
10509 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
10510 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
10511 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
10512 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10513
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10514 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
10515 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
10516 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
10517 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
10518 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
10519 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
10520
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10521 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
10522 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
10523
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10524 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
10525 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10526 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
10527 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
10528 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
10529 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
10530 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
10531 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
10532 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
10533 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
10534 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
10535 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
10536 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10537
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10538 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
10539 {
1295
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10540 struct stat buf;
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10541
877
d3693ceec9b1 Implemented dw_listbox_set_top() for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 876
diff changeset
10542 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
10543 {
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 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
10545 }
1295
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10546
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10547 /* See if the path exists */
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10548 if(stat(mypath, &buf) == 0)
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10549 {
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10550 /* If the path is a directory... set the current folder */
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10551 if(buf.st_mode & S_IFDIR)
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10552 gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER( filew ), mypath );
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10553 else if(flags == DW_FILE_SAVE) /* Otherwise set the filename */
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10554 gtk_file_chooser_set_filename( GTK_FILE_CHOOSER( filew ), mypath );
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10555 else if(flags == DW_FILE_OPEN)
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10556 gtk_file_chooser_select_filename( GTK_FILE_CHOOSER( filew), mypath );
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10557 }
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10558 else if(flags == DW_FILE_SAVE)
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10559 {
1300
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10560 if(strchr(mypath, '/'))
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10561 {
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10562 unsigned long x = strlen(mypath) - 1;
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10563
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10564 /* Trim off the filename */
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10565 while(x > 0 && mypath[x] != '/')
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10566 {
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10567 x--;
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10568 }
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10569 if(mypath[x] == '/')
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10570 {
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10571 char *file = NULL;
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10572 char temp[PATH_MAX+1];
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10573
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10574 /* Save the original path in temp */
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10575 strcpy(temp, mypath);
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10576 mypath[x] = 0;
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10577
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10578 /* Check to make sure the trimmed piece is a directory */
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10579 if(realpath(mypath, temp) && stat(temp, &buf) == 0)
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10580 {
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10581 if(buf.st_mode & S_IFDIR)
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10582 {
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10583 /* We now have it split */
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10584 file = &mypath[x+1];
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10585 }
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10586 }
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10587
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10588 /* Select folder... */
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10589 gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER(filew), temp );
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10590 /* ... and file separately */
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10591 if(file)
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10592 gtk_file_chooser_set_current_name( GTK_FILE_CHOOSER(filew), file );
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10593 }
9c8de9cccc07 Fix for file and folder not being selected on GTK if file does not exist.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1295
diff changeset
10594 }
1295
d0c9d4d0ff3b Implement default filename support for GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
10595 }
775
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 }
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
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10598 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
10599 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10600 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
10601 /*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
10602 }
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 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
10605 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
10606 }
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
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
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 /*
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 * 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
10611 * 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
10612 * 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
10613 * 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
10614 * 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
10615 * 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
10616 * -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
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 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
10619 {
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 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
10621
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10622 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
10623 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10624 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
10625
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10626 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
10627 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
10628 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
10629 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
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 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
10632 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10633 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
10634 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10635 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
10636
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10637 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
10638 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10639 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
10640 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
10641 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10642 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
10643 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10644 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
10645
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10646 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
10647 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10648 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
10649 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10650 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
10651 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
10652 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
10653 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
10654 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
10655 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10656 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
10657 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
10658 }
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 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
10660 }
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 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
10662 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
10663 }
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 /* 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
10665 _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
10666 }
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 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
10668 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10669
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10670 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10671 * 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
10672 * 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
10673 * 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
10674 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10675 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
10676 {
1118
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
10677 /* 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
10678 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
10679 {
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
10680 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
10681 }
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
10682 else
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
10683 {
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
10684 /* 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
10685 * 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
10686 */
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
10687 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
10688
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
10689 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
10690 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
10691 execargs[0] = browser;
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
10692 execargs[1] = url;
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
10693 execargs[2] = NULL;
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
10694
63dd52ba9a8f Added support for attempting to launch a browser using a
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1116
diff changeset
10695 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
10696 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10697 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10698
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 * 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
10701 * 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
10702 * 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
10703 * 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
10704 */
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 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
10706 {
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
10707 #ifdef USE_WEBKIT
775
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 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
10709 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
10710 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
10711
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 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
10713 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
10714
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 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
10716 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
10717 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
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 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
10720 {
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 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
10722 _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
10723 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
10724 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
10725 _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
10726 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
10727 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
10728 _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
10729 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
10730 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
10731 _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
10732 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
10733 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
10734 _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
10735 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
10736 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
10737 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
10738 _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
10739 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
10740 }
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 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
10743 #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
10744 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10745
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10746 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10747 * 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
10748 * 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
10749 * 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
10750 * 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
10751 * 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
10752 * 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
10753 * 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
10754 */
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 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
10756 {
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
10757 #ifdef USE_WEBKIT
775
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 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
10759 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
10760
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 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
10762 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
10763
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10764 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
10765 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
10766 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
10767 {
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 _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
10769 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
10770 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10771 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
10772 return 0;
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
10773 #else
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
10774 return -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
10775 #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
10776 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10777
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10778 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10779 * 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
10780 * 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
10781 * 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
10782 * 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
10783 * 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
10784 * 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
10785 * 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
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 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
10788 {
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
10789 #ifdef USE_WEBKIT
775
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 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
10791 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
10792
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 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
10794 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
10795
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 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
10797 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
10798 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
10799 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10800 _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
10801 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
10802 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10803 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
10804 return 0;
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
10805 #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
10806 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
10807 #endif
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
10808 }
775
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 #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
10811 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
10812 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10813 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
10814 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
10815
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 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
10817 _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
10818 }
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 /*
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 * 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
10821 * 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
10822 * 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
10823 */
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 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
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 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
10827 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
10828
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 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
10830 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
10831 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
10832 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
10833 }
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 #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
10835
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 /*
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 * 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
10838 * 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
10839 * 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
10840 * 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
10841 */
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 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
10843 {
1355
dd252596227b Removed a now unused variable on GTK in dw_html_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1354
diff changeset
10844 GtkWidget *widget = 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
10845 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
10846
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 DW_MUTEX_LOCK;
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
10848 #ifdef USE_WEBKIT
775
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 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
10850 {
1358
2f5e54b0c5c4 dw_debug() lines in dw_html_new() should end with a newline.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1355
diff changeset
10851 dw_debug( "HTML widget not available; you do not have access to webkit.\n" );
775
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 }
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 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
10854 {
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 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
10856 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
10857 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
10858 web_view = (WebKitWebView *)_webkit_web_view_new();
1320
6bebcfa03b2b Added support for dw_font_set_default() on GTK for appropriate widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
10859 /* web_view = WEBKIT_WEB_VIEW(_webkit_web_view_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
10860 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
10861 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
10862 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
10863 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
10864 }
1354
1f22addc2722 Changed the behavior of dw_html_new() to return NULL on failure like the documentation indicates...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1353
diff changeset
10865 gtk_widget_show(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
10866 #else
1358
2f5e54b0c5c4 dw_debug() lines in dw_html_new() should end with a newline.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1355
diff changeset
10867 dw_debug( "HTML widget not available; you do not have access to webkit.\n" );
775
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 #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
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 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
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 /*
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 * 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
10875 * 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
10876 * 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
10877 * 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
10878 * 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
10879 * 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
10880 */
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 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
10882 {
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10883 int _locked_by_me = FALSE;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10884 GtkClipboard *clipboard_object;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10885 char *ret = NULL;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10886
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10887 DW_MUTEX_LOCK;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10888 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
10889 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10890 gchar *clipboard_contents;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
10891
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10892 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
10893 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10894 ret = strdup((char *)clipboard_contents);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10895 g_free(clipboard_contents);
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10896 }
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10897 }
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10898 DW_MUTEX_UNLOCK;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10899 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
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
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 /*
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 * 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
10904 * 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
10905 * 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
10906 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10907 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
10908 {
971
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10909 int _locked_by_me = FALSE;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10910 GtkClipboard *clipboard_object;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10911
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10912 DW_MUTEX_LOCK;
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10913 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
10914 {
2a21915684d1 Step 1 in modernizing the GTK3 module.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 959
diff changeset
10915 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
10916 }
775
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 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
10918 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10919
1136
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10920 /* 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
10921 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
10922 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10923 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
10924 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
10925 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
10926 int result = 0;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10927 HPIXMAP pixmap;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10928
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10929 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
10930 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10931 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
10932 pixmap->handle = (HWND)operation;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10933 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
10934 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
10935 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
10936 if(result)
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10937 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
10938 free(pixmap);
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10939 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10940 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10941
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10942 /*
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10943 * 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
10944 * Parameters:
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1149
diff changeset
10945 * 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
10946 * 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
10947 * 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
10948 * 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
10949 * 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
10950 * Returns:
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1136
diff changeset
10951 * 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
10952 */
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1149
diff changeset
10953 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
10954 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10955 GtkPrintOperation *op;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10956 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
10957
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10958 if(!drawfunc)
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10959 return NULL;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10960
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10961 DW_MUTEX_LOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10962 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
10963 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10964 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
10965 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
10966 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
10967 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
10968 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
10969 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10970 DW_MUTEX_UNLOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10971 return (HPRINT)op;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10972 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10973
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10974 /*
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10975 * 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
10976 * Parameters:
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10977 * 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
10978 * 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
10979 * Returns:
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10980 * 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
10981 */
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10982 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
10983 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10984 GtkPrintOperationResult res;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10985 GtkPrintOperation *op = (GtkPrintOperation *)print;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10986 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
10987
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10988 DW_MUTEX_LOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10989 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
10990 DW_MUTEX_UNLOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10991 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
10992 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10993
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10994 /*
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10995 * 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
10996 * Parameters:
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10997 * 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
10998 */
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
10999 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
11000 {
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
11001 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
11002 GtkPrintOperation *op = (GtkPrintOperation *)print;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
11003
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
11004 DW_MUTEX_LOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
11005 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
11006 DW_MUTEX_UNLOCK;
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
11007 }
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
11008
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
11009 /*
1a5b0908659b Initial implementation of the DynamicWindows Print object for GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1127
diff changeset
11010 * 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
11011 * 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
11012 * 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
11013 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11014 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
11015 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11016 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
11017
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11018 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
11019 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11020 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
11021
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11022 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
11023 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
11024 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
11025 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
11026 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11027 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
11028 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11029
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11030 /*
1384
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
11031 * Returns a pointer to a static buffer which containes the
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
11032 * private application data directory.
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
11033 */
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
11034 char * API dw_app_dir(void)
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
11035 {
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
11036 return _dw_share_path;
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
11037 }
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
11038
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1373
diff changeset
11039 /*
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11040 * 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
11041 * 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
11042 * 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
11043 * 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
11044 * 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
11045 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11046 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
11047 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11048 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
11049
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11050 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
11051
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11052 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
11053 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
11054 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11055
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11056 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11057 * 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
11058 * 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
11059 * 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
11060 * 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
11061 * 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
11062 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11063 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
11064 {
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
11065 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
11066 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
11067
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11068 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
11069 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
11070
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11071 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
11072 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
11073 {
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
11074 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
11075 }
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
11076 if(thiswindow && G_IS_OBJECT(thiswindow))
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
11077 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
11078 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
11079 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11080
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11081 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11082 * 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
11083 * 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
11084 * 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
11085 * 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
11086 * 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
11087 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11088 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
11089 {
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
11090 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
11091 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
11092 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
11093
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11094 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
11095 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
11096
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11097 DW_MUTEX_LOCK;
784
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
11098 if(GTK_IS_SCROLLED_WINDOW(window))
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
11099 {
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
11100 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
11101 }
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
11102 if(G_IS_OBJECT(thiswindow))
fb21fdd6b839 Slight code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 783
diff changeset
11103 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
11104 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
11105 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
11106 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11107
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
11108 /* 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
11109 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
11110 {
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
11111 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
11112 void *sdata;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
11113 char tmpbuf[31] = {0};
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
11114 int *tag = data;
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
11115
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
11116 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
11117 {
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
11118 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
11119 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
11120 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
11121 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
11122 }
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
11123 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
11124 {
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
11125 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
11126 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
11127 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
11128 }
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
11129 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
11130 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
11131 }
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
11132
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11133 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11134 * 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
11135 * 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
11136 * 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
11137 * 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
11138 * 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
11139 * 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
11140 * 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
11141 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11142 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
11143 {
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
11144 int *tag, _locked_by_me = FALSE;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
11145 char tmpbuf[31] = {0};
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
11146
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
11147 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
11148
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
11149 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
11150 *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
11151 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
11152 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
11153 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
11154 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
11155 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
11156 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
11157 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11158
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11159 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11160 * 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
11161 * 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
11162 * 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
11163 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11164 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
11165 {
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
11166 int _locked_by_me = FALSE;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1300
diff changeset
11167 char tmpbuf[31] = {0};
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
11168
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
11169 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
11170 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
11171 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
11172 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
11173 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
11174 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
11175 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11176
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11177 /* 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
11178 * 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
11179 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11180 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
11181 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11182 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
11183
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11184 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
11185 thiswindow = (HWND)g_object_get_data(G_OBJECT(window), "_dw_user");
1583
525c4c9d04c6 After switching to non-deprecated functions in GTK3 like...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1579
diff changeset
11186 else if(GTK_IS_SCALE(thiswindow) || GTK_IS_SCROLLBAR(thiswindow) || GTK_IS_SPIN_BUTTON(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
11187 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
11188 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
11189 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
11190 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
11191 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11192
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11193 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11194 * 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
11195 * 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
11196 * 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
11197 * 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
11198 * 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
11199 * 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
11200 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11201 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
11202 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11203 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
11204 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
11205 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
11206 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
11207 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
11208
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11209 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
11210 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11211 * 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
11212 * 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
11213 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11214 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
11215 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11216 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
11217 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11218
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
11219 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
11220 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
11221 thisname = "draw";
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
11222 }
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
11223 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
11224 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11225 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
11226 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
11227 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11228 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
11229 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11230 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
11231 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
11232 _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
11233
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11234 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
11235 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
11236 }
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
11237 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
11238 (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
11239 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
11240 GtkWidget *widget = thiswindow;
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
11241
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11242 thisname = "changed";
1096
5261439c7227 Fix bug with setting up container on 64bit platform.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1092
diff changeset
11243
779
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
11244 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
11245 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
11246 {
d67d2f626c33 More code and cleanups for listboxes/combobox and event handling...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 778
diff changeset
11247 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
11248 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
11249 }
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
11250 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
11251 {
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
11252 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
11253 }
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
11254 _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
11255
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11256 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
11257 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
11258 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11259 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
11260 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11261 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
11262 }
783
9ef49898a5e6 Container events now working except for column-click.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 782
diff changeset
11263 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
11264 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11265 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
11266 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
11267 _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
11268
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11269 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
11270 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
11271 }
786
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
11272 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
11273 {
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
11274 /* 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
11275 * 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
11276 */
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
11277 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
11278 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
11279 DW_MUTEX_UNLOCK;
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
11280 return;
0e251c2f5d08 Implemented the column click event handler...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 785
diff changeset
11281 }
775
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11282 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
11283 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11284 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
11285 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
11286 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
11287 }
8fe51d916b36 Reenabled the set-focus code that was disabled due to combobox issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 788
diff changeset
11288 #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
11289 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
11290 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11291 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
11292 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
11293 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
11294 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11295 #endif
1583
525c4c9d04c6 After switching to non-deprecated functions in GTK3 like...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1579
diff changeset
11296 else if (GTK_IS_SCALE(thiswindow) || GTK_IS_SCROLLBAR(thiswindow) || GTK_IS_SPIN_BUTTON(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
11297 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11298 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
11299 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11300 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
11301 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11302 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
11303 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11304
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11305 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
11306 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11307 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
11308 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
11309 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11310
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11311 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
11312 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
11313 _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
11314 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
11315 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11316
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11317 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11318 * 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
11319 * 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
11320 * 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
11321 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11322 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
11323 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11324 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
11325 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
11326 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
11327 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
11328
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11329 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
11330 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
11331 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
11332 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
11333
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11334 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
11335 {
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
11336 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
11337
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11338 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
11339 _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
11340 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11341 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
11342 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11343
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11344 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11345 * 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
11346 * 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
11347 * 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
11348 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11349 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
11350 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11351 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
11352 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
11353 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
11354
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11355 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
11356 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
11357 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
11358
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11359 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
11360 _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
11361 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
11362 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
11363 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11364
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11365 /*
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11366 * 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
11367 * 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
11368 * 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
11369 * 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
11370 */
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11371 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
11372 {
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11373 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
11374 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
11375 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
11376
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11377 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
11378 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
11379 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
11380
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11381 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
11382 {
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
11383 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
11384
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11385 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
11386 _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
11387 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11388 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
11389 }
5ec50e403a8a Added initial support for GTK 3.0. Split it off into its own directory.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11390
1785
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11391 /*
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11392 * Converts a UTF-8 encoded string into a wide string.
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11393 * Parameters:
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11394 * utf8string: UTF-8 encoded source string.
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11395 * Returns:
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11396 * Wide string that needs to be freed with dw_free()
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11397 * or NULL on failure.
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11398 */
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11399 wchar_t * API dw_utf8_to_wchar(char *utf8string)
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11400 {
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11401 wchar_t *retval = NULL, *freeme;
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11402
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11403 if(sizeof(wchar_t) == sizeof(gunichar))
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11404 freeme = retval = (wchar_t *)g_utf8_to_ucs4(utf8string, -1, NULL, NULL, NULL);
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11405 else if(sizeof(wchar_t) == sizeof(gunichar2))
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11406 freeme = retval = (wchar_t *)g_utf8_to_utf16(utf8string, -1, NULL, NULL, NULL);
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11407 if(retval)
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11408 {
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11409 retval = wcsdup(retval);
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11410 g_free(freeme);
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11411 }
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11412 return retval;
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11413 }
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11414
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11415 /*
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11416 * Converts a wide string into a UTF-8 encoded string.
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11417 * Parameters:
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11418 * wstring: Wide source string.
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11419 * Returns:
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11420 * UTF-8 encoded string that needs to be freed with dw_free()
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11421 * or NULL on failure.
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11422 */
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11423 char * API dw_wchar_to_utf8(wchar_t *wstring)
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11424 {
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11425 char *retval = NULL, *freeme;
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11426
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11427 if(sizeof(wchar_t) == sizeof(gunichar))
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11428 freeme = retval = g_ucs4_to_utf8((gunichar *)wstring, -1, NULL, NULL, NULL);
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11429 else if(sizeof(wchar_t) == sizeof(gunichar2))
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11430 freeme = retval = g_utf16_to_utf8((gunichar2 *)wstring, -1, NULL, NULL, NULL);
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11431 if(retval)
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11432 {
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11433 retval = strdup(retval);
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11434 g_free(freeme);
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11435 }
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11436 return retval;
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11437 }
c5ea64e8b436 Added UTF8/Wide conversion for GTK2/3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
11438