annotate mac/dw.m @ 1566:035bc006afbe

Experimental change... halfway between min and max for tree controls.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 20 Jan 2012 18:47:10 +0000
parents d84a690448c3
children d6e17c8f4de2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2 * Dynamic Windows:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3 * A GTK like implementation of the MacOS GUI using Cocoa
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4 *
1559
bc3a11fe9a46 Don't use _dw_pool_drain() in dw_exit() on Mac... that drains and recreates the pool.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1558
diff changeset
5 * (C) 2011-2012 Brian Smith <brian@dbsoft.org>
721
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6 * (C) 2011 Mark Hessling <mark@rexx.org>
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7 *
942
3c9dfb004df6 Minor change to the build comment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 941
diff changeset
8 * Requires 10.5 or later.
3c9dfb004df6 Minor change to the build comment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 941
diff changeset
9 * clang -std=c99 -g -o dwtest -D__MAC__ -I. dwtest.c mac/dw.m -framework Cocoa -framework WebKit
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11 #import <Cocoa/Cocoa.h>
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
12 #import <WebKit/WebKit.h>
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
13 #include "dw.h"
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
14 #include <sys/utsname.h>
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
15 #include <sys/socket.h>
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
16 #include <sys/un.h>
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
17 #include <sys/mman.h>
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
18 #include <sys/time.h>
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
19 #include <sys/stat.h>
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
20 #include <math.h>
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
21
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
22 /* Create a define to let us know to include Snow Leopard specific features */
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
23 #if defined(MAC_OS_X_VERSION_10_6) && ((defined(MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6) || !defined(MAC_OS_X_VERSION_MIN_REQUIRED))
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
24 #define BUILDING_FOR_SNOW_LEOPARD
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
25 #endif
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
26
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
27 /* Macros to protect access to thread unsafe classes */
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
28 #define DW_MUTEX_LOCK { \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
29 if(DWThread != (DWTID)-1 && pthread_self() != DWThread && pthread_self() != _dw_mutex_locked) { \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
30 dw_mutex_lock(DWThreadMutex); \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
31 _dw_mutex_locked = pthread_self(); \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
32 dw_mutex_lock(DWThreadMutex2); \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
33 [DWObj performSelectorOnMainThread:@selector(synchronizeThread:) withObject:nil waitUntilDone:NO]; \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
34 dw_mutex_lock(DWRunMutex); \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
35 _locked_by_me = TRUE; } }
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
36 #define DW_MUTEX_UNLOCK { \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
37 if(pthread_self() != DWThread && _locked_by_me == TRUE) { \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
38 dw_mutex_unlock(DWRunMutex); \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
39 dw_mutex_unlock(DWThreadMutex2); \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
40 _dw_mutex_locked = (pthread_t)-1; \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
41 dw_mutex_unlock(DWThreadMutex); \
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
42 _locked_by_me = FALSE; } }
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
43
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
44 unsigned long _colors[] =
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
45 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
46 0x00000000, /* 0 black */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
47 0x000000bb, /* 1 red */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
48 0x0000bb00, /* 2 green */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
49 0x0000aaaa, /* 3 yellow */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
50 0x00cc0000, /* 4 blue */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
51 0x00bb00bb, /* 5 magenta */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
52 0x00bbbb00, /* 6 cyan */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
53 0x00bbbbbb, /* 7 white */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
54 0x00777777, /* 8 grey */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
55 0x000000ff, /* 9 bright red */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
56 0x0000ff00, /* 10 bright green */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
57 0x0000eeee, /* 11 bright yellow */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
58 0x00ff0000, /* 12 bright blue */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
59 0x00ff00ff, /* 13 bright magenta */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
60 0x00eeee00, /* 14 bright cyan */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
61 0x00ffffff, /* 15 bright white */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
62 0xff000000 /* 16 default color */
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
63 };
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
64
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
65 /*
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
66 * List those icons that have transparency first
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
67 */
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
68 #define NUM_EXTS 8
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
69 char *image_exts[NUM_EXTS] =
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
70 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
71 ".png",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
72 ".ico",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
73 ".icns",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
74 ".gif",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
75 ".jpg",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
76 ".jpeg",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
77 ".tiff",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
78 ".bmp"
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
79 };
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
80
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
81 char *_dw_get_image_extension( char *filename )
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
82 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
83 char *file = alloca(strlen(filename) + 6);
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
84 int found_ext = 0,i;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
85
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
86 /* Try various extentions */
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
87 for ( i = 0; i < NUM_EXTS; i++ )
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
88 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
89 strcpy( file, filename );
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
90 strcat( file, image_exts[i] );
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
91 if ( access( file, R_OK ) == 0 )
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
92 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
93 found_ext = 1;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
94 break;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
95 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
96 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
97 if ( found_ext == 1 )
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
98 {
940
b5ae9cf15f68 Fix for returning wrong extension in _dw_get_image_extension; only worked for .ico files
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 939
diff changeset
99 return image_exts[i];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
100 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
101 return NULL;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
102 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
103
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
104 unsigned long _get_color(unsigned long thiscolor)
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
105 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
106 if(thiscolor & DW_RGB_COLOR)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
107 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
108 return thiscolor & ~DW_RGB_COLOR;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
109 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
110 else if(thiscolor < 17)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
111 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
112 return _colors[thiscolor];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
113 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
114 return 0;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
115 }
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
116
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
117 /* Thread specific storage */
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
118 #if !defined(GARBAGE_COLLECT)
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
119 pthread_key_t _dw_pool_key;
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
120 #endif
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
121 pthread_key_t _dw_fg_color_key;
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
122 pthread_key_t _dw_bg_color_key;
950
73ff2daed8ca Attempt at fixing mouse button detection on Leopard for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 949
diff changeset
123 SInt32 DWOSMajor, DWOSMinor, DWOSBuild;
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
124 static char _dw_bundle_path[PATH_MAX+1] = { 0 };
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
125
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
126 /* Create a default colors for a thread */
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
127 void _init_colors(void)
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
128 {
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
129 NSColor *fgcolor = [[NSColor grayColor] retain];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
130
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
131 pthread_setspecific(_dw_fg_color_key, fgcolor);
891
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
132 pthread_setspecific(_dw_bg_color_key, NULL);
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
133 }
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
134
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
135 typedef struct _sighandler
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
136 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
137 struct _sighandler *next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
138 ULONG message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
139 HWND window;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
140 int id;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
141 void *signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
142 void *data;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
143
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
144 } SignalHandler;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
145
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
146 SignalHandler *Root = NULL;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
147
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
148 /* Some internal prototypes */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
149 static void _do_resize(Box *thisbox, int x, int y);
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
150 void _handle_resize_events(Box *thisbox);
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
151 int _remove_userdata(UserData **root, char *varname, int all);
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
152 int _dw_main_iteration(NSDate *date);
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
153
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
154 /* Internal function to queue a window redraw */
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
155 void _dw_redraw(id window, int skip)
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
156 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
157 static id lastwindow = nil;
1425
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
158 id redraw = lastwindow;
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
159
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
160 if(skip && window == nil)
1425
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
161 return;
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
162
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
163 lastwindow = window;
1425
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
164 if(redraw != lastwindow && redraw != nil)
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
165 {
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
166 dw_window_redraw(redraw);
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
167 }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
168 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
169
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
170 SignalHandler *_get_handler(HWND window, int messageid)
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
171 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
172 SignalHandler *tmp = Root;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
173
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
174 /* Find any callbacks for this function */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
175 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
176 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
177 if(tmp->message == messageid && window == tmp->window)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
178 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
179 return tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
180 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
181 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
182 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
183 return NULL;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
184 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
185
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
186 typedef struct
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
187 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
188 ULONG message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
189 char name[30];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
190
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
191 } SignalList;
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
192
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
193 /* List of signals */
803
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
194 #define SIGNALMAX 17
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
195
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
196 SignalList SignalTranslate[SIGNALMAX] = {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
197 { 1, DW_SIGNAL_CONFIGURE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
198 { 2, DW_SIGNAL_KEY_PRESS },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
199 { 3, DW_SIGNAL_BUTTON_PRESS },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
200 { 4, DW_SIGNAL_BUTTON_RELEASE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
201 { 5, DW_SIGNAL_MOTION_NOTIFY },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
202 { 6, DW_SIGNAL_DELETE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
203 { 7, DW_SIGNAL_EXPOSE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
204 { 8, DW_SIGNAL_CLICKED },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
205 { 9, DW_SIGNAL_ITEM_ENTER },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
206 { 10, DW_SIGNAL_ITEM_CONTEXT },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
207 { 11, DW_SIGNAL_LIST_SELECT },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
208 { 12, DW_SIGNAL_ITEM_SELECT },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
209 { 13, DW_SIGNAL_SET_FOCUS },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
210 { 14, DW_SIGNAL_VALUE_CHANGED },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
211 { 15, DW_SIGNAL_SWITCH_PAGE },
803
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
212 { 16, DW_SIGNAL_TREE_EXPAND },
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
213 { 17, DW_SIGNAL_COLUMN_CLICK }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
214 };
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
215
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
216 int _event_handler1(id object, NSEvent *event, int message)
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
217 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
218 SignalHandler *handler = _get_handler(object, message);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
219 /* NSLog(@"Event handler - type %d\n", message); */
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
220
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
221 if(handler)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
222 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
223 switch(message)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
224 {
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
225 /* Timer event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
226 case 0:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
227 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
228 int (* API timerfunc)(void *) = (int (* API)(void *))handler->signalfunction;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
229
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
230 if(!timerfunc(handler->data))
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
231 dw_timer_disconnect(handler->id);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
232 return 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
233 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
234 /* Configure/Resize event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
235 case 1:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
236 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
237 int (*sizefunc)(HWND, int, int, void *) = handler->signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
238 NSSize size;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
239
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
240 if([object isKindOfClass:[NSWindow class]])
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
241 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
242 NSWindow *window = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
243 size = [[window contentView] frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
244 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
245 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
246 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
247 NSView *view = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
248 size = [view frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
249 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
250
706
79b38b1f3346 Scrollbar event fixes... scale was wrong... not sure it is correct but it is better.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 705
diff changeset
251 if(size.width > 0 && size.height > 0)
79b38b1f3346 Scrollbar event fixes... scale was wrong... not sure it is correct but it is better.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 705
diff changeset
252 {
79b38b1f3346 Scrollbar event fixes... scale was wrong... not sure it is correct but it is better.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 705
diff changeset
253 return sizefunc(object, size.width, size.height, handler->data);
79b38b1f3346 Scrollbar event fixes... scale was wrong... not sure it is correct but it is better.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 705
diff changeset
254 }
79b38b1f3346 Scrollbar event fixes... scale was wrong... not sure it is correct but it is better.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 705
diff changeset
255 return 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
256 }
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
257 case 2:
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
258 {
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
259 int (*keypressfunc)(HWND, char, int, int, void *) = handler->signalfunction;
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
260 NSString *nchar = [event charactersIgnoringModifiers];
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
261 int special = (int)[event modifierFlags];
724
41080d22edc8 Couple more fixes to keyhandling... committed before I finished what I was doing...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 723
diff changeset
262 unichar vk = [nchar characterAtIndex:0];
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
263 char ch = '\0';
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
264
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
265 /* Handle a valid key */
724
41080d22edc8 Couple more fixes to keyhandling... committed before I finished what I was doing...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 723
diff changeset
266 if([nchar length] == 1)
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
267 {
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
268 const char *tmp = [nchar UTF8String];
899
3fbba8b1f440 Don't pass in a partial UTF8 string in the character field during key press events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 898
diff changeset
269 if(tmp && strlen(tmp) == 1)
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
270 {
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
271 ch = tmp[0];
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
272 }
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
273 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
274
724
41080d22edc8 Couple more fixes to keyhandling... committed before I finished what I was doing...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 723
diff changeset
275 return keypressfunc(handler->window, ch, (int)vk, special, handler->data);
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
276 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
277 /* Button press and release event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
278 case 3:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
279 case 4:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
280 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
281 int (* API buttonfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))handler->signalfunction;
1222
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
282 NSPoint p = [NSEvent mouseLocation];
922
07f9a73c6847 Fix for button press/release events coordinates being relative to the window instead of the screen on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 921
diff changeset
283 int button = 1;
1222
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
284
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
285 if([event isMemberOfClass:[NSEvent class]])
922
07f9a73c6847 Fix for button press/release events coordinates being relative to the window instead of the screen on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 921
diff changeset
286 {
1222
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
287 id view = [[[event window] contentView] superview];
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
288 NSEventType type = [event type];
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
289
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
290 p = [view convertPoint:[event locationInWindow] toView:object];
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
291
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
292 if(type == NSRightMouseDown || type == NSRightMouseUp)
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
293 {
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
294 button = 2;
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
295 }
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
296 else if(type == NSOtherMouseDown || type == NSOtherMouseUp)
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
297 {
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
298 button = 3;
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
299 }
922
07f9a73c6847 Fix for button press/release events coordinates being relative to the window instead of the screen on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 921
diff changeset
300 }
07f9a73c6847 Fix for button press/release events coordinates being relative to the window instead of the screen on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 921
diff changeset
301
954
cfb12bf3bb06 Fixes for some more coordinate system issues on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 953
diff changeset
302 return buttonfunc(object, (int)p.x, (int)p.y, button, handler->data);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
303 }
886
d94a4fa0359e Implemented the motion notify event on Mac. Most of it was there except the event handler.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 882
diff changeset
304 /* Motion notify event */
d94a4fa0359e Implemented the motion notify event on Mac. Most of it was there except the event handler.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 882
diff changeset
305 case 5:
d94a4fa0359e Implemented the motion notify event on Mac. Most of it was there except the event handler.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 882
diff changeset
306 {
d94a4fa0359e Implemented the motion notify event on Mac. Most of it was there except the event handler.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 882
diff changeset
307 int (* API motionfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))handler->signalfunction;
950
73ff2daed8ca Attempt at fixing mouse button detection on Leopard for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 949
diff changeset
308 int buttonmask = DWOSMinor > 5 ? (int)[NSEvent pressedMouseButtons] : 0;
945
254b50be1bc1 Coordinate system changes to button press and motion notify events on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 944
diff changeset
309 id view = [[[event window] contentView] superview];
254b50be1bc1 Coordinate system changes to button press and motion notify events on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 944
diff changeset
310 NSPoint p = [view convertPoint:[event locationInWindow] toView:object];
953
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
311
950
73ff2daed8ca Attempt at fixing mouse button detection on Leopard for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 949
diff changeset
312 if(DWOSMinor < 6)
73ff2daed8ca Attempt at fixing mouse button detection on Leopard for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 949
diff changeset
313 {
73ff2daed8ca Attempt at fixing mouse button detection on Leopard for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 949
diff changeset
314 buttonmask = (1 << [event buttonNumber]);
73ff2daed8ca Attempt at fixing mouse button detection on Leopard for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 949
diff changeset
315 }
945
254b50be1bc1 Coordinate system changes to button press and motion notify events on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 944
diff changeset
316
954
cfb12bf3bb06 Fixes for some more coordinate system issues on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 953
diff changeset
317 return motionfunc(object, (int)p.x, (int)p.y, buttonmask, handler->data);
886
d94a4fa0359e Implemented the motion notify event on Mac. Most of it was there except the event handler.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 882
diff changeset
318 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
319 /* Window close event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
320 case 6:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
321 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
322 int (* API closefunc)(HWND, void *) = (int (* API)(HWND, void *))handler->signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
323 return closefunc(object, handler->data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
324 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
325 /* Window expose/draw event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
326 case 7:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
327 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
328 DWExpose exp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
329 int (* API exposefunc)(HWND, DWExpose *, void *) = (int (* API)(HWND, DWExpose *, void *))handler->signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
330 NSRect rect = [object frame];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
331
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
332 exp.x = rect.origin.x;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
333 exp.y = rect.origin.y;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
334 exp.width = rect.size.width;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
335 exp.height = rect.size.height;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
336 int result = exposefunc(object, &exp, handler->data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
337 [[object window] flushWindow];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
338 return result;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
339 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
340 /* Clicked event for buttons and menu items */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
341 case 8:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
342 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
343 int (* API clickfunc)(HWND, void *) = (int (* API)(HWND, void *))handler->signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
344
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
345 return clickfunc(object, handler->data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
346 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
347 /* Container class selection event */
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
348 case 9:
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
349 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
350 int (*containerselectfunc)(HWND, char *, void *) = handler->signalfunction;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
351
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
352 return containerselectfunc(handler->window, (char *)event, handler->data);
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
353 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
354 /* Container context menu event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
355 case 10:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
356 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
357 int (* API containercontextfunc)(HWND, char *, int, int, void *, void *) = (int (* API)(HWND, char *, int, int, void *, void *))handler->signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
358 char *text = (char *)event;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
359 void *user = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
360 LONG x,y;
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
361
1061
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
362 /* Fill in both items for the tree */
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
363 if([object isKindOfClass:[NSOutlineView class]])
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
364 {
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
365 id item = event;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
366 NSString *nstr = [item objectAtIndex:1];
1061
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
367 text = (char *)[nstr UTF8String];
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
368 NSValue *value = [item objectAtIndex:2];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
369 if(value && [value isKindOfClass:[NSValue class]])
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
370 {
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
371 user = [value pointerValue];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
372 }
1061
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
373 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
374
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
375 dw_pointer_query_pos(&x, &y);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
376
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
377 return containercontextfunc(handler->window, text, (int)x, (int)y, handler->data, user);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
378 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
379 /* Generic selection changed event for several classes */
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
380 case 11:
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
381 case 14:
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
382 {
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
383 int (* API valuechangedfunc)(HWND, int, void *) = (int (* API)(HWND, int, void *))handler->signalfunction;
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
384 int selected = DW_POINTER_TO_INT(event);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
385
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
386 return valuechangedfunc(handler->window, selected, handler->data);;
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
387 }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
388 /* Tree class selection event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
389 case 12:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
390 {
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
391 int (* API treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = (int (* API)(HWND, HTREEITEM, char *, void *, void *))handler->signalfunction;
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
392 char *text = (char *)event;
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
393 void *user = NULL;
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
394 id item = nil;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
395
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
396 if([object isKindOfClass:[NSOutlineView class]])
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
397 {
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
398 item = (id)event;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
399 NSString *nstr = [item objectAtIndex:1];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
400
727
f190b5c2ce16 Fixed 2 errors in the tree select event handler. Also removed unused experimental code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 726
diff changeset
401 if(nstr)
712
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
402 {
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
403 text = strdup([nstr UTF8String]);
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
404 }
713
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
405 else
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
406 {
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
407 text = NULL;
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
408 }
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
409
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
410 NSValue *value = [item objectAtIndex:2];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
411 if(value && [value isKindOfClass:[NSValue class]])
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
412 {
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
413 user = [value pointerValue];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
414 }
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
415 int result = treeselectfunc(handler->window, item, text, handler->data, user);
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
416 if(text)
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
417 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
418 free(text);
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
419 }
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
420 return result;
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
421 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
422
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
423 return treeselectfunc(handler->window, item, text, handler->data, user);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
424 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
425 /* Set Focus event */
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
426 case 13:
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
427 {
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
428 int (* API setfocusfunc)(HWND, void *) = (int (* API)(HWND, void *))handler->signalfunction;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
429
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
430 return setfocusfunc(handler->window, handler->data);
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
431 }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
432 /* Notebook page change event */
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
433 case 15:
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
434 {
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
435 int (* API switchpagefunc)(HWND, unsigned long, void *) = (int (* API)(HWND, unsigned long, void *))handler->signalfunction;
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
436 int pageid = DW_POINTER_TO_INT(event);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
437
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
438 return switchpagefunc(handler->window, pageid, handler->data);
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
439 }
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
440 case 16:
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
441 {
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
442 int (* API treeexpandfunc)(HWND, HTREEITEM, void *) = (int (* API)(HWND, HTREEITEM, void *))handler->signalfunction;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
443
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
444 return treeexpandfunc(handler->window, (HTREEITEM)event, handler->data);
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
445 }
803
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
446 case 17:
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
447 {
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
448 int (*clickcolumnfunc)(HWND, int, void *) = handler->signalfunction;
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
449 int column_num = DW_POINTER_TO_INT(event);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
450
803
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
451 return clickcolumnfunc(handler->window, column_num, handler->data);
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
452 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
453 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
454 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
455 return -1;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
456 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
457
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
458 /* Sub function to handle redraws */
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
459 int _event_handler(id object, NSEvent *event, int message)
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
460 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
461 int ret = _event_handler1(object, event, message);
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
462 if(ret != -1)
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
463 _dw_redraw(nil, FALSE);
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
464 return ret;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
465 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
466
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
467 /* Subclass for the Timer type */
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
468 @interface DWTimerHandler : NSObject { }
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
469 -(void)runTimer:(id)sender;
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
470 @end
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
471
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
472 @implementation DWTimerHandler
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
473 -(void)runTimer:(id)sender { _event_handler(sender, nil, 0); }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
474 @end
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
475
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
476 NSApplication *DWApp;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
477 NSMenu *DWMainMenu;
740
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
478 NSFont *DWDefaultFont;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
479 DWTimerHandler *DWHandler;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
480 #if !defined(GARBAGE_COLLECT)
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
481 NSAutoreleasePool *pool;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
482 #endif
661
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
483 HWND _DWLastDrawable;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
484 HMTX DWRunMutex;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
485 HMTX DWThreadMutex;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
486 HMTX DWThreadMutex2;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
487 DWTID DWThread = (DWTID)-1;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
488 DWTID _dw_mutex_locked = (DWTID)-1;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
489
1558
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
490 /* Send fake event to make sure the loop isn't stuck */
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
491 void _dw_wakeup_app()
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
492 {
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
493 [DWApp postEvent:[NSEvent otherEventWithType:NSApplicationDefined
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
494 location:NSMakePoint(0, 0)
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
495 modifierFlags:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
496 timestamp:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
497 windowNumber:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
498 context:NULL
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
499 subtype:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
500 data1:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
501 data2:0]
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
502 atStart:NO];
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
503 }
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
504
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
505 /* Used for doing bitblts from the main thread */
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
506 typedef struct _bitbltinfo
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
507 {
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
508 id src;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
509 id dest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
510 int xdest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
511 int ydest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
512 int width;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
513 int height;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
514 int xsrc;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
515 int ysrc;
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
516 int srcwidth;
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
517 int srcheight;
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
518 } DWBitBlt;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
519
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
520 /* Subclass for a test object type */
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
521 @interface DWObject : NSObject {}
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
522 -(void)uselessThread:(id)sender;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
523 -(void)synchronizeThread:(id)param;
1378
a54720b10821 Fix menu items getting stuck highlighted on Mac if the action triggered a window focus change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1376
diff changeset
524 -(void)menuHandler:(id)param;
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
525 -(void)doBitBlt:(id)param;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
526 -(void)doFlush:(id)param;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
527 @end
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
528
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
529 @interface DWMenuItem : NSMenuItem
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
530 {
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
531 int check;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
532 }
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
533 -(void)setCheck:(int)input;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
534 -(int)check;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
535 -(void)dealloc;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
536 @end
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
537
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
538 @implementation DWObject
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
539 -(void)uselessThread:(id)sender { /* Thread only to initialize threading */ }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
540 -(void)synchronizeThread:(id)param
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
541 {
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
542 pthread_mutex_unlock(DWRunMutex);
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
543 pthread_mutex_lock(DWThreadMutex2);
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
544 pthread_mutex_unlock(DWThreadMutex2);
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
545 pthread_mutex_lock(DWRunMutex);
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
546 }
1378
a54720b10821 Fix menu items getting stuck highlighted on Mac if the action triggered a window focus change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1376
diff changeset
547 -(void)menuHandler:(id)param
a54720b10821 Fix menu items getting stuck highlighted on Mac if the action triggered a window focus change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1376
diff changeset
548 {
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
549 DWMenuItem *item = param;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
550 if([item check])
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
551 {
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
552 if([item state] == NSOnState)
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
553 [item setState:NSOffState];
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
554 else
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
555 [item setState:NSOnState];
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
556 }
1378
a54720b10821 Fix menu items getting stuck highlighted on Mac if the action triggered a window focus change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1376
diff changeset
557 _event_handler(param, nil, 8);
a54720b10821 Fix menu items getting stuck highlighted on Mac if the action triggered a window focus change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1376
diff changeset
558 }
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
559 -(void)doBitBlt:(id)param
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
560 {
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
561 NSValue *bi = (NSValue *)param;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
562 DWBitBlt *bltinfo = (DWBitBlt *)[bi pointerValue];
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
563 id bltdest = bltinfo->dest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
564 id bltsrc = bltinfo->src;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
565
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
566 if([bltdest isMemberOfClass:[NSBitmapImageRep class]])
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
567 {
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
568 [NSGraphicsContext saveGraphicsState];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
569 [NSGraphicsContext setCurrentContext:[NSGraphicsContext
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
570 graphicsContextWithGraphicsPort:[[NSGraphicsContext graphicsContextWithBitmapImageRep:bltdest] graphicsPort] flipped:YES]];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
571 [[[NSDictionary alloc] initWithObjectsAndKeys:bltdest, NSGraphicsContextDestinationAttributeName, nil] autorelease];
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
572 }
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
573 else
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
574 {
747
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
575 if([bltdest lockFocusIfCanDraw] == NO)
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
576 {
917
8567c9ac089d Switched back to using the dealloc() method in dw_pixmap_destroy() to stop a memory leak on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 916
diff changeset
577 free(bltinfo);
747
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
578 return;
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
579 }
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
580 _DWLastDrawable = bltinfo->dest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
581 }
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
582 if([bltsrc isMemberOfClass:[NSBitmapImageRep class]])
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
583 {
910
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
584 NSBitmapImageRep *rep = bltsrc;
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
585 NSImage *image;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
586
910
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
587 if(DWOSMinor > 5)
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
588 {
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
589 image = [[NSImage alloc] initWithCGImage:[rep CGImage] size:NSZeroSize];
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
590 }
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
591 else
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
592 {
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
593 image = [[NSImage alloc] initWithSize:[rep size]];
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
594 [image addRepresentation:rep];
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
595 }
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
596 if(bltinfo->srcwidth != -1)
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
597 {
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
598 [image drawInRect:NSMakeRect(bltinfo->xdest, bltinfo->ydest, bltinfo->width, bltinfo->height)
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
599 fromRect:NSMakeRect(bltinfo->xsrc, bltinfo->ysrc, bltinfo->srcwidth, bltinfo->srcheight)
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
600 operation:NSCompositeSourceOver fraction:1.0];
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
601 }
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
602 else
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
603 {
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
604 [image drawAtPoint:NSMakePoint(bltinfo->xdest, bltinfo->ydest)
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
605 fromRect:NSMakeRect(bltinfo->xsrc, bltinfo->ysrc, bltinfo->width, bltinfo->height)
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
606 operation:NSCompositeSourceOver fraction:1.0];
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
607 }
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
608 [bltsrc release];
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
609 [image release];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
610 }
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
611 if([bltdest isMemberOfClass:[NSBitmapImageRep class]])
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
612 {
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
613 [NSGraphicsContext restoreGraphicsState];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
614 }
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
615 else
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
616 {
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
617 [bltdest unlockFocus];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
618 }
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
619 free(bltinfo);
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
620 }
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
621 -(void)doFlush:(id)param
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
622 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
623 if(_DWLastDrawable)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
624 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
625 id object = _DWLastDrawable;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
626 NSWindow *window = [object window];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
627 [window flushWindow];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
628 }
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
629 }
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
630 -(void)doWindowFunc:(id)param
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
631 {
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
632 NSValue *v = (NSValue *)param;
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
633 void **params = (void **)[v pointerValue];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
634 void (* windowfunc)(void *);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
635
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
636 if(params)
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
637 {
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
638 windowfunc = params[0];
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
639 if(windowfunc)
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
640 {
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
641 windowfunc(params[1]);
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
642 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
643 }
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
644 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
645 @end
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
646
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
647 DWObject *DWObj;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
648
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
649 /* So basically to implement our event handlers...
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
650 * it looks like we are going to have to subclass
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
651 * basically everything. Was hoping to add methods
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
652 * to the superclasses but it looks like you can
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
653 * only add methods and no variables, which isn't
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
654 * going to work. -Brian
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
655 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
656
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
657 /* Subclass for a box type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
658 @interface DWBox : NSView
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
659 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
660 Box *box;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
661 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
662 NSColor *bgcolor;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
663 }
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
664 -(id)init;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
665 -(void)dealloc;
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
666 -(Box *)box;
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
667 -(id)contentView;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
668 -(void *)userdata;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
669 -(void)setUserdata:(void *)input;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
670 -(void)drawRect:(NSRect)rect;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
671 -(BOOL)isFlipped;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
672 -(void)mouseDown:(NSEvent *)theEvent;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
673 -(void)mouseUp:(NSEvent *)theEvent;
701
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
674 -(NSMenu *)menuForEvent:(NSEvent *)theEvent;
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
675 -(void)rightMouseUp:(NSEvent *)theEvent;
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
676 -(void)otherMouseDown:(NSEvent *)theEvent;
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
677 -(void)otherMouseUp:(NSEvent *)theEvent;
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
678 -(void)keyDown:(NSEvent *)theEvent;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
679 -(void)setColor:(unsigned long)input;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
680 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
681
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
682 @implementation DWBox
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
683 -(id)init
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
684 {
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
685 self = [super init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
686
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
687 if (self)
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
688 {
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
689 box = calloc(1, sizeof(Box));
1453
4b516ef23b62 Boxes need to default to vertical on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1449
diff changeset
690 box->type = DW_VERT;
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
691 box->vsize = box->hsize = SIZEEXPAND;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
692 box->width = box->height = 1;
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
693 }
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
694 return self;
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
695 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
696 -(void)dealloc
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
697 {
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
698 UserData *root = userdata;
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
699 free(box);
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
700 _remove_userdata(&root, NULL, TRUE);
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
701 dw_signal_disconnect_by_window(self);
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
702 [super dealloc];
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
703 }
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
704 -(Box *)box { return box; }
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
705 -(id)contentView { return self; }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
706 -(void *)userdata { return userdata; }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
707 -(void)setUserdata:(void *)input { userdata = input; }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
708 -(void)drawRect:(NSRect)rect
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
709 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
710 if(bgcolor)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
711 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
712 [bgcolor set];
755
f574028932cc Fix for crash when changing background colors, needed retain and release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 754
diff changeset
713 NSRectFill([self bounds]);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
714 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
715 }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
716 -(BOOL)isFlipped { return YES; }
701
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
717 -(void)mouseDown:(NSEvent *)theEvent { _event_handler(self, (void *)1, 3); }
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
718 -(void)mouseUp:(NSEvent *)theEvent { _event_handler(self, (void *)1, 4); }
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
719 -(NSMenu *)menuForEvent:(NSEvent *)theEvent { _event_handler(self, (void *)2, 3); return nil; }
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
720 -(void)rightMouseUp:(NSEvent *)theEvent { _event_handler(self, (void *)2, 4); }
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
721 -(void)otherMouseDown:(NSEvent *)theEvent { _event_handler(self, (void *)3, 3); }
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
722 -(void)otherMouseUp:(NSEvent *)theEvent { _event_handler(self, (void *)3, 4); }
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
723 -(void)keyDown:(NSEvent *)theEvent { _event_handler(self, theEvent, 2); }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
724 -(void)setColor:(unsigned long)input
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
725 {
755
f574028932cc Fix for crash when changing background colors, needed retain and release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 754
diff changeset
726 id orig = bgcolor;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
727
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
728 if(input == _colors[DW_CLR_DEFAULT])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
729 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
730 bgcolor = nil;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
731 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
732 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
733 {
755
f574028932cc Fix for crash when changing background colors, needed retain and release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 754
diff changeset
734 bgcolor = [[NSColor colorWithDeviceRed: DW_RED_VALUE(input)/255.0 green: DW_GREEN_VALUE(input)/255.0 blue: DW_BLUE_VALUE(input)/255.0 alpha: 1] retain];
812
f8bfb19090f9 dw_window_set_color() now affects boxes immediately (no longer on the next window refresh).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 811
diff changeset
735 [bgcolor set];
f8bfb19090f9 dw_window_set_color() now affects boxes immediately (no longer on the next window refresh).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 811
diff changeset
736 NSRectFill([self bounds]);
f8bfb19090f9 dw_window_set_color() now affects boxes immediately (no longer on the next window refresh).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 811
diff changeset
737 [self setNeedsDisplay:YES];
755
f574028932cc Fix for crash when changing background colors, needed retain and release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 754
diff changeset
738 }
f574028932cc Fix for crash when changing background colors, needed retain and release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 754
diff changeset
739 [orig release];
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
740 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
741 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
742
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
743 /* Subclass for a group box type */
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
744 @interface DWGroupBox : NSBox
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
745 {
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
746 void *userdata;
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
747 NSColor *bgcolor;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
748 NSSize borderSize;
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
749 }
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
750 -(Box *)box;
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
751 -(void *)userdata;
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
752 -(void)setUserdata:(void *)input;
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
753 @end
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
754
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
755 @implementation DWGroupBox
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
756 -(Box *)box { return [[self contentView] box]; }
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
757 -(void *)userdata { return userdata; }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
758 -(NSSize)borderSize { return borderSize; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
759 -(NSSize)initBorder
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
760 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
761 NSSize frameSize = [self frame].size;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
762
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
763 if(frameSize.height < 20 || frameSize.width < 20)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
764 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
765 frameSize.width = frameSize.height = 100;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
766 [self setFrameSize:frameSize];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
767 }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
768 NSSize contentSize = [[self contentView] frame].size;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
769 NSSize titleSize = [self titleRect].size;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
770
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
771 borderSize.width = 100-contentSize.width;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
772 borderSize.height = (100-contentSize.height)-titleSize.height;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
773 return borderSize;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
774 }
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
775 -(void)setUserdata:(void *)input { userdata = input; }
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
776 @end
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
777
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
778 @interface DWWindow : NSWindow
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
779 {
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
780 int redraw;
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
781 int shown;
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
782 }
898
bf2ca780f62d One more try at window key handling... since I can't seem to trap keyDown events in most places that get focus...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 895
diff changeset
783 -(void)sendEvent:(NSEvent *)theEvent;
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
784 -(void)keyDown:(NSEvent *)theEvent;
932
ed10b5284f36 Fixes for dw_window_capture(), dw_window_release() and motion notify events on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 931
diff changeset
785 -(void)mouseDragged:(NSEvent *)theEvent;
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
786 -(int)redraw;
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
787 -(void)setRedraw:(int)val;
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
788 -(int)shown;
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
789 -(void)setShown:(int)val;
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
790 @end
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
791
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
792 @implementation DWWindow
1129
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
793 -(void)sendEvent:(NSEvent *)theEvent
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
794 {
1133
25bea6526ca1 Similar Mac fix to what I just commited on Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1130
diff changeset
795 int rcode = -1;
1129
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
796 if([theEvent type] == NSKeyDown)
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
797 {
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
798 rcode = _event_handler(self, theEvent, 2);
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
799 }
1133
25bea6526ca1 Similar Mac fix to what I just commited on Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1130
diff changeset
800 if ( rcode != TRUE )
1129
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
801 [super sendEvent:theEvent];
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
802 }
898
bf2ca780f62d One more try at window key handling... since I can't seem to trap keyDown events in most places that get focus...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 895
diff changeset
803 -(void)keyDown:(NSEvent *)theEvent { }
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
804 -(void)mouseDragged:(NSEvent *)theEvent { _event_handler(self, theEvent, 5); }
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
805 -(int)redraw { return redraw; }
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
806 -(void)setRedraw:(int)val { redraw = val; }
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
807 -(int)shown { return shown; }
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
808 -(void)setShown:(int)val { shown = val; }
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
809 @end
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
810
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
811 /* Subclass for a render area type */
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
812 @interface DWRender : NSControl
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
813 {
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
814 void *userdata;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
815 NSFont *font;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
816 NSSize size;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
817 }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
818 -(void *)userdata;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
819 -(void)setUserdata:(void *)input;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
820 -(void)setFont:(NSFont *)input;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
821 -(NSFont *)font;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
822 -(void)setSize:(NSSize)input;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
823 -(NSSize)size;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
824 -(void)mouseDown:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
825 -(void)mouseUp:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
826 -(NSMenu *)menuForEvent:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
827 -(void)rightMouseUp:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
828 -(void)otherMouseDown:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
829 -(void)otherMouseUp:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
830 -(void)drawRect:(NSRect)rect;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
831 -(void)keyDown:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
832 -(BOOL)isFlipped;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
833 @end
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
834
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
835 @implementation DWRender
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
836 -(void *)userdata { return userdata; }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
837 -(void)setUserdata:(void *)input { userdata = input; }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
838 -(void)setFont:(NSFont *)input { [font release]; font = input; [font retain]; }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
839 -(NSFont *)font { return font; }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
840 -(void)setSize:(NSSize)input { size = input; }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
841 -(NSSize)size { return size; }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
842 -(void)mouseDown:(NSEvent *)theEvent { _event_handler(self, theEvent, 3); }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
843 -(void)mouseUp:(NSEvent *)theEvent { _event_handler(self, theEvent, 4); }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
844 -(NSMenu *)menuForEvent:(NSEvent *)theEvent { _event_handler(self, theEvent, 3); return nil; }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
845 -(void)rightMouseUp:(NSEvent *)theEvent { _event_handler(self, theEvent, 4); }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
846 -(void)otherMouseDown:(NSEvent *)theEvent { _event_handler(self, theEvent, 3); }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
847 -(void)otherMouseUp:(NSEvent *)theEvent { _event_handler(self, theEvent, 4); }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
848 -(void)mouseDragged:(NSEvent *)theEvent { _event_handler(self, theEvent, 5); }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
849 -(void)drawRect:(NSRect)rect { _event_handler(self, nil, 7); }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
850 -(void)keyDown:(NSEvent *)theEvent { _event_handler(self, theEvent, 2); }
954
cfb12bf3bb06 Fixes for some more coordinate system issues on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 953
diff changeset
851 -(BOOL)isFlipped { return YES; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
852 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); [font release]; dw_signal_disconnect_by_window(self); [super dealloc]; }
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
853 -(BOOL)acceptsFirstResponder { return YES; }
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
854 @end
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
855
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
856 /* Subclass for a top-level window */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
857 @interface DWView : DWBox
854
d44bb4c4902d Fixed an error on the close event handler on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 853
diff changeset
858 #ifdef BUILDING_FOR_SNOW_LEOPARD
d44bb4c4902d Fixed an error on the close event handler on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 853
diff changeset
859 <NSWindowDelegate>
d44bb4c4902d Fixed an error on the close event handler on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 853
diff changeset
860 #endif
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
861 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
862 NSMenu *windowmenu;
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
863 NSSize oldsize;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
864 }
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
865 -(BOOL)windowShouldClose:(id)sender;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
866 -(void)setMenu:(NSMenu *)input;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
867 -(void)windowDidBecomeMain:(id)sender;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
868 -(void)menuHandler:(id)sender;
932
ed10b5284f36 Fixes for dw_window_capture(), dw_window_release() and motion notify events on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 931
diff changeset
869 -(void)mouseDragged:(NSEvent *)theEvent;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
870 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
871
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
872 @implementation DWView
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
873 -(BOOL)windowShouldClose:(id)sender
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
874 {
1018
a943f973c3ff If there is no close event handler, the window should close by default on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 992
diff changeset
875 if(_event_handler(sender, nil, 6) > 0)
a943f973c3ff If there is no close event handler, the window should close by default on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 992
diff changeset
876 return NO;
a943f973c3ff If there is no close event handler, the window should close by default on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 992
diff changeset
877 return YES;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
878 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
879 - (void)viewDidMoveToWindow
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
880 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
881 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowResized:) name:NSWindowDidResizeNotification object:[self window]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
882 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidBecomeMain:) name:NSWindowDidBecomeMainNotification object:[self window]];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
883 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
884 - (void)dealloc
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
885 {
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
886 if(windowmenu)
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
887 {
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
888 [windowmenu release];
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
889 }
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
890 [[NSNotificationCenter defaultCenter] removeObserver:self];
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
891 dw_signal_disconnect_by_window(self);
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
892 [super dealloc];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
893 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
894 - (void)windowResized:(NSNotification *)notification;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
895 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
896 NSSize size = [self frame].size;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
897
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
898 if(oldsize.width != size.width || oldsize.height != size.height)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
899 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
900 _do_resize(box, size.width, size.height);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
901 _event_handler([self window], nil, 1);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
902 oldsize.width = size.width;
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
903 oldsize.height = size.height;
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
904 _handle_resize_events(box);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
905 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
906 }
930
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
907 -(void)showWindow
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
908 {
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
909 NSSize size = [self frame].size;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
910
930
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
911 if(oldsize.width == size.width && oldsize.height == size.height)
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
912 {
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
913 _do_resize(box, size.width, size.height);
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
914 _handle_resize_events(box);
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
915 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
916
930
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
917 }
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
918 -(void)windowDidBecomeMain:(id)sender
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
919 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
920 if(windowmenu)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
921 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
922 [DWApp setMainMenu:windowmenu];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
923 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
924 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
925 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
926 [DWApp setMainMenu:DWMainMenu];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
927 }
1026
f15dc5226c35 Fixed focus event was getting ignored because wrong handle passed to the event handler on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1023
diff changeset
928 _event_handler([self window], nil, 13);
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
929 }
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
930 -(void)setMenu:(NSMenu *)input { windowmenu = input; [windowmenu retain]; }
1522
c98b2ce2d5b2 Fix menuHandler not being called until an event on Mac 10.5. This reinstitutes the menu display bug on Leopard but that is only a cosmetic issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1517
diff changeset
931 -(void)menuHandler:(id)sender
c98b2ce2d5b2 Fix menuHandler not being called until an event on Mac 10.5. This reinstitutes the menu display bug on Leopard but that is only a cosmetic issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1517
diff changeset
932 {
1558
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
933 [DWObj performSelector:@selector(menuHandler:) withObject:sender afterDelay:0];
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
934 _dw_wakeup_app();
1522
c98b2ce2d5b2 Fix menuHandler not being called until an event on Mac 10.5. This reinstitutes the menu display bug on Leopard but that is only a cosmetic issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1517
diff changeset
935 }
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
936 -(void)mouseDragged:(NSEvent *)theEvent { _event_handler(self, theEvent, 5); }
952
abb9203adc05 Use NSCompositeSourceOver for bitblting that respects transparency of the source
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 951
diff changeset
937 -(void)mouseMoved:(NSEvent *)theEvent
abb9203adc05 Use NSCompositeSourceOver for bitblting that respects transparency of the source
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 951
diff changeset
938 {
944
cdb7a53e5515 Some motion notify changes... so it can handle events without the mouse button pressed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 943
diff changeset
939 id hit = [self hitTest:[theEvent locationInWindow]];
952
abb9203adc05 Use NSCompositeSourceOver for bitblting that respects transparency of the source
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 951
diff changeset
940
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
941 if([hit isMemberOfClass:[DWRender class]])
952
abb9203adc05 Use NSCompositeSourceOver for bitblting that respects transparency of the source
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 951
diff changeset
942 {
abb9203adc05 Use NSCompositeSourceOver for bitblting that respects transparency of the source
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 951
diff changeset
943 _event_handler(hit, theEvent, 5);
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
944 }
944
cdb7a53e5515 Some motion notify changes... so it can handle events without the mouse button pressed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 943
diff changeset
945 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
946 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
947
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
948 /* Subclass for a button type */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
949 @interface DWButton : NSButton
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
950 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
951 void *userdata;
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
952 NSButtonType buttonType;
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
953 DWBox *parent;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
954 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
955 -(void *)userdata;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
956 -(void)setUserdata:(void *)input;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
957 -(void)buttonClicked:(id)sender;
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
958 -(void)setButtonType:(NSButtonType)input;
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
959 -(NSButtonType)buttonType;
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
960 -(void)setParent:(DWBox *)input;
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
961 -(DWBox *)parent;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
962 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
963
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
964 @implementation DWButton
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
965 -(void *)userdata { return userdata; }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
966 -(void)setUserdata:(void *)input { userdata = input; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
967 -(void)buttonClicked:(id)sender
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
968 {
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
969 _event_handler(self, nil, 8);
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
970 if([self buttonType] == NSRadioButton)
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
971 {
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
972 DWBox *viewbox = [self parent];
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
973 Box *thisbox = [viewbox box];
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
974 int z;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
975
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
976 for(z=0;z<thisbox->count;z++)
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
977 {
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
978 if(thisbox->items[z].type != TYPEBOX)
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
979 {
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
980 id object = thisbox->items[z].hwnd;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
981
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
982 if([object isMemberOfClass:[DWButton class]])
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
983 {
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
984 DWButton *button = object;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
985
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
986 if(button != self && [button buttonType] == NSRadioButton)
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
987 {
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
988 [button setState:NSOffState];
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
989 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
990 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
991 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
992 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
993 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
994 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
995 -(void)setButtonType:(NSButtonType)input { buttonType = input; [super setButtonType:input]; }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
996 -(NSButtonType)buttonType { return buttonType; }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
997 -(void)setParent:(DWBox *)input { parent = input; }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
998 -(DWBox *)parent { return parent; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
999 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1000 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1001
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1002 /* Subclass for a progress type */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1003 @interface DWPercent : NSProgressIndicator
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1004 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1005 void *userdata;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1006 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1007 -(void *)userdata;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1008 -(void)setUserdata:(void *)input;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1009 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1010
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1011 @implementation DWPercent
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1012 -(void *)userdata { return userdata; }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1013 -(void)setUserdata:(void *)input { userdata = input; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1014 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1015 @end
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1016
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1017 /* Subclass for a menu item type */
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1018 @implementation DWMenuItem
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
1019 -(void)setCheck:(int)input { check = input; }
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
1020 -(int)check { return check; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1021 -(void)dealloc { dw_signal_disconnect_by_window(self); [super dealloc]; }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1022 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1023
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1024 /* Subclass for a scrollbox type */
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1025 @interface DWScrollBox : NSScrollView
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1026 {
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1027 void *userdata;
840
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
1028 id box;
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1029 }
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1030 -(void *)userdata;
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1031 -(void)setUserdata:(void *)input;
840
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
1032 -(void)setBox:(void *)input;
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
1033 -(id)box;
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1034 @end
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1035
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1036 @implementation DWScrollBox
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1037 -(void *)userdata { return userdata; }
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1038 -(void)setUserdata:(void *)input { userdata = input; }
840
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
1039 -(void)setBox:(void *)input { box = input; }
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
1040 -(id)box { return box; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1041 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1042 @end
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1043
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1044 /* Subclass for a textfield that supports vertical centering */
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1045 @interface DWTextFieldCell : NSTextFieldCell
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1046 {
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1047 BOOL vcenter;
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1048 }
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1049 -(NSRect)drawingRectForBounds:(NSRect)theRect;
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1050 -(void)setVCenter:(BOOL)input;
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1051 @end
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1052
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1053 @implementation DWTextFieldCell
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1054 -(NSRect)drawingRectForBounds:(NSRect)theRect
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1055 {
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1056 /* Get the parent's idea of where we should draw */
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1057 NSRect newRect = [super drawingRectForBounds:theRect];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1058
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1059 /* If we are being vertically centered */
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1060 if(vcenter)
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1061 {
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1062 /* Get our ideal size for current text */
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1063 NSSize textSize = [self cellSizeForBounds:theRect];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1064
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1065 /* Center that in the proposed rect */
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1066 float heightDelta = newRect.size.height - textSize.height;
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1067 if (heightDelta > 0)
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1068 {
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1069 newRect.size.height -= heightDelta;
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1070 newRect.origin.y += (heightDelta / 2);
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1071 }
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1072 }
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1073
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1074 return newRect;
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1075 }
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1076 -(void)setVCenter:(BOOL)input { vcenter = input; }
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1077 @end
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1078
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1079 @interface DWEntryFieldFormatter : NSFormatter
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1080 {
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1081 int maxLength;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1082 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1083 - (void)setMaximumLength:(int)len;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1084 - (int)maximumLength;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1085 @end
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1086
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1087 /* This formatter subclass will allow us to limit
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1088 * the text length in an entryfield.
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1089 */
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1090 @implementation DWEntryFieldFormatter
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1091 -(id)init
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1092 {
1063
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
1093 self = [super init];
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1094 maxLength = INT_MAX;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1095 return self;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1096 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1097 -(void)setMaximumLength:(int)len { maxLength = len; }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1098 -(int)maximumLength { return maxLength; }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1099 -(NSString *)stringForObjectValue:(id)object { return (NSString *)object; }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1100 -(BOOL)getObjectValue:(id *)object forString:(NSString *)string errorDescription:(NSString **)error { *object = string; return YES; }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1101 -(BOOL)isPartialStringValid:(NSString **)partialStringPtr
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1102 proposedSelectedRange:(NSRangePointer)proposedSelRangePtr
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1103 originalString:(NSString *)origString
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1104 originalSelectedRange:(NSRange)origSelRange
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1105 errorDescription:(NSString **)error
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1106 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1107 if([*partialStringPtr length] > maxLength)
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1108 {
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1109 return NO;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1110 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1111 return YES;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1112 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1113 -(NSAttributedString *)attributedStringForObjectValue:(id)anObject withDefaultAttributes:(NSDictionary *)attributes { return nil; }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1114 @end
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1115
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1116 /* Subclass for a entryfield type */
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1117 @interface DWEntryField : NSTextField
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1118 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1119 void *userdata;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1120 id clickDefault;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1121 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1122 -(void *)userdata;
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1123 -(void)setUserdata:(void *)input;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1124 -(void)setClickDefault:(id)input;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1125 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1126
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1127 @implementation DWEntryField
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1128 -(void *)userdata { return userdata; }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1129 -(void)setUserdata:(void *)input { userdata = input; }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1130 -(void)setClickDefault:(id)input { clickDefault = input; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1131 -(void)keyUp:(NSEvent *)theEvent
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1132 {
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1133 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1134 if(clickDefault && vk == VK_RETURN)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1135 {
1236
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1136 if([clickDefault isKindOfClass:[NSButton class]])
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1137 [clickDefault buttonClicked:self];
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1138 else
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1139 [[self window] makeFirstResponder:clickDefault];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1140 } else
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1141 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1142 [super keyUp:theEvent];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1143 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1144 }
1235
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1145 -(BOOL)performKeyEquivalent:(NSEvent *)theEvent
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1146 {
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1147 if(([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) == NSCommandKeyMask)
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1148 {
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1149 if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"x"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1150 return [NSApp sendAction:@selector(cut:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1151 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"c"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1152 return [NSApp sendAction:@selector(copy:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1153 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"v"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1154 return [NSApp sendAction:@selector(paste:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1155 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"a"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1156 return [NSApp sendAction:@selector(selectAll:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1157 }
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1158 return [super performKeyEquivalent:theEvent];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1159 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1160 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1161 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1162
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1163 /* Subclass for a text and status text type */
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1164 @interface DWText : NSTextField
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1165 {
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1166 void *userdata;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1167 id clickDefault;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1168 }
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1169 -(void *)userdata;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1170 -(void)setUserdata:(void *)input;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1171 @end
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1172
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1173 @implementation DWText
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1174 -(void *)userdata { return userdata; }
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1175 -(void)setUserdata:(void *)input { userdata = input; }
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1176 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); [super dealloc]; }
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1177 @end
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1178
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1179
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1180 /* Subclass for a entryfield password type */
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1181 @interface DWEntryFieldPassword : NSSecureTextField
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1182 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1183 void *userdata;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1184 id clickDefault;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1185 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1186 -(void *)userdata;
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1187 -(void)setUserdata:(void *)input;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1188 -(void)setClickDefault:(id)input;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1189 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1190
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1191 @implementation DWEntryFieldPassword
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1192 -(void *)userdata { return userdata; }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1193 -(void)setUserdata:(void *)input { userdata = input; }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1194 -(void)setClickDefault:(id)input { clickDefault = input; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1195 -(void)keyUp:(NSEvent *)theEvent
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1196 {
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1197 if(clickDefault && [[theEvent charactersIgnoringModifiers] characterAtIndex:0] == VK_RETURN)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1198 {
1236
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1199 if([clickDefault isKindOfClass:[NSButton class]])
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1200 [clickDefault buttonClicked:self];
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1201 else
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1202 [[self window] makeFirstResponder:clickDefault];
1235
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1203 }
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1204 else
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1205 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1206 [super keyUp:theEvent];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1207 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1208 }
1235
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1209 -(BOOL)performKeyEquivalent:(NSEvent *)theEvent
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1210 {
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1211 if(([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) == NSCommandKeyMask)
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1212 {
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1213 if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"x"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1214 return [NSApp sendAction:@selector(cut:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1215 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"c"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1216 return [NSApp sendAction:@selector(copy:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1217 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"v"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1218 return [NSApp sendAction:@selector(paste:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1219 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"a"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1220 return [NSApp sendAction:@selector(selectAll:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1221 }
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1222 return [super performKeyEquivalent:theEvent];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1223 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1224 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1225 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1226
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1227 /* Subclass for a Notebook control type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1228 @interface DWNotebook : NSTabView
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
1229 #ifdef BUILDING_FOR_SNOW_LEOPARD
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1230 <NSTabViewDelegate>
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1231 #endif
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1232 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1233 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1234 int pageid;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1235 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1236 -(void *)userdata;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1237 -(void)setUserdata:(void *)input;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1238 -(int)pageid;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1239 -(void)setPageid:(int)input;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1240 -(void)tabView:(NSTabView *)notebook didSelectTabViewItem:(NSTabViewItem *)notepage;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1241 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1242
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1243 /* Subclass for a Notebook page type */
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1244 @interface DWNotebookPage : NSTabViewItem
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1245 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1246 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1247 int pageid;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1248 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1249 -(void *)userdata;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1250 -(void)setUserdata:(void *)input;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1251 -(int)pageid;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1252 -(void)setPageid:(int)input;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1253 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1254
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1255 @implementation DWNotebook
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1256 -(void *)userdata { return userdata; }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1257 -(void)setUserdata:(void *)input { userdata = input; }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1258 -(int)pageid { return pageid; }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1259 -(void)setPageid:(int)input { pageid = input; }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1260 -(void)tabView:(NSTabView *)notebook didSelectTabViewItem:(NSTabViewItem *)notepage
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1261 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1262 id object = [notepage view];
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1263 DWNotebookPage *page = (DWNotebookPage *)notepage;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1264
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1265 if([object isMemberOfClass:[DWBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1266 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1267 DWBox *view = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1268 Box *box = [view box];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1269 NSSize size = [view frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1270 _do_resize(box, size.width, size.height);
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1271 _handle_resize_events(box);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1272 }
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
1273 _event_handler(self, DW_INT_TO_POINTER([page pageid]), 15);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1274 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1275 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1276 @end
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1277
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1278 @implementation DWNotebookPage
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1279 -(void *)userdata { return userdata; }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1280 -(void)setUserdata:(void *)input { userdata = input; }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1281 -(int)pageid { return pageid; }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1282 -(void)setPageid:(int)input { pageid = input; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1283 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1284 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1285
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1286 /* Subclass for a color chooser type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1287 @interface DWColorChoose : NSColorPanel
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1288 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1289 DWDialog *dialog;
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
1290 NSColor *pickedcolor;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1291 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1292 -(void)changeColor:(id)sender;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1293 -(void)setDialog:(DWDialog *)input;
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
1294 -(DWDialog *)dialog;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1295 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1296
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1297 @implementation DWColorChoose
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
1298 -(void)changeColor:(id)sender { pickedcolor = [self color]; }
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
1299 -(BOOL)windowShouldClose:(id)window { DWDialog *d = dialog; dialog = nil; dw_dialog_dismiss(d, pickedcolor); [window orderOut:nil]; return NO; }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1300 -(void)setDialog:(DWDialog *)input { dialog = input; }
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
1301 -(DWDialog *)dialog { return dialog; }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1302 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1303
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1304 /* Subclass for a font chooser type */
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1305 @interface DWFontChoose : NSFontPanel
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1306 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1307 DWDialog *dialog;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1308 NSFontManager *fontManager;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1309 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1310 -(void)setDialog:(DWDialog *)input;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1311 -(void)setFontManager:(NSFontManager *)input;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1312 -(DWDialog *)dialog;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1313 @end
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1314
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1315 @implementation DWFontChoose
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
1316 -(BOOL)windowShouldClose:(id)window
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
1317 {
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1318 DWDialog *d = dialog; dialog = nil;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1319 NSFont *pickedfont = [fontManager selectedFont];
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
1320 dw_dialog_dismiss(d, pickedfont);
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
1321 [window orderOut:nil];
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
1322 return NO;
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1323 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1324 -(void)setDialog:(DWDialog *)input { dialog = input; }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1325 -(void)setFontManager:(NSFontManager *)input { fontManager = input; }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1326 -(DWDialog *)dialog { return dialog; }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1327 @end
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1328
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1329 /* Subclass for a splitbar type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1330 @interface DWSplitBar : NSSplitView
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
1331 #ifdef BUILDING_FOR_SNOW_LEOPARD
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1332 <NSSplitViewDelegate>
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1333 #endif
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1334 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1335 void *userdata;
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1336 float percent;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1337 }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1338 -(void)splitViewDidResizeSubviews:(NSNotification *)aNotification;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1339 -(void *)userdata;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1340 -(void)setUserdata:(void *)input;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1341 -(float)percent;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1342 -(void)setPercent:(float)input;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1343 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1344
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1345 @implementation DWSplitBar
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1346 -(void)splitViewDidResizeSubviews:(NSNotification *)aNotification
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1347 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1348 NSArray *views = [self subviews];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1349 id object;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1350
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1351 for(object in views)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1352 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1353 if([object isMemberOfClass:[DWBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1354 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1355 DWBox *view = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1356 Box *box = [view box];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1357 NSSize size = [view frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1358 _do_resize(box, size.width, size.height);
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1359 _handle_resize_events(box);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1360 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1361 }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1362 }
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1363 -(void *)userdata { return userdata; }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1364 -(void)setUserdata:(void *)input { userdata = input; }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1365 -(float)percent { return percent; }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1366 -(void)setPercent:(float)input { percent = input; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1367 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1368 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1369
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1370 /* Subclass for a slider type */
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1371 @interface DWSlider : NSSlider
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1372 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1373 void *userdata;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1374 }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1375 -(void *)userdata;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1376 -(void)setUserdata:(void *)input;
704
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
1377 -(void)sliderChanged:(id)sender;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1378 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1379
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1380 @implementation DWSlider
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1381 -(void *)userdata { return userdata; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1382 -(void)setUserdata:(void *)input { userdata = input; }
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
1383 -(void)sliderChanged:(id)sender { _event_handler(self, (void *)[self integerValue], 14); }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1384 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1385 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1386
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1387 /* Subclass for a slider type */
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1388 @interface DWScrollbar : NSScroller
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1389 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1390 void *userdata;
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
1391 double range;
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
1392 double visible;
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
1393 int vertical;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1394 }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1395 -(void *)userdata;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1396 -(void)setUserdata:(void *)input;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1397 -(float)range;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1398 -(float)visible;
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
1399 -(int)vertical;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
1400 -(void)setVertical:(int)value;
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
1401 -(void)setRange:(double)input1 andVisible:(double)input2;
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
1402 -(void)scrollerChanged:(id)sender;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1403 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1404
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1405 @implementation DWScrollbar
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1406 -(void *)userdata { return userdata; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1407 -(void)setUserdata:(void *)input { userdata = input; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1408 -(float)range { return range; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1409 -(float)visible { return visible; }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
1410 -(int)vertical { return vertical; }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
1411 -(void)setVertical:(int)value { vertical = value; }
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
1412 -(void)setRange:(double)input1 andVisible:(double)input2 { range = input1; visible = input2; }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1413 -(void)scrollerChanged:(id)sender
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1414 {
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
1415 double max = (range - visible);
923
0ac67b62b594 Fix int to double conversion issues causing scrollbar issues on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 922
diff changeset
1416 double result = ([self doubleValue] * max);
0ac67b62b594 Fix int to double conversion issues causing scrollbar issues on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 922
diff changeset
1417 double newpos = result;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1418
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1419 switch ([sender hitPart])
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1420 {
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1421
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1422 case NSScrollerDecrementLine:
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1423 if(newpos > 0)
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1424 {
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1425 newpos--;
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1426 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1427 break;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1428
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1429 case NSScrollerIncrementLine:
712
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
1430 if(newpos < max)
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1431 {
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1432 newpos++;
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1433 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1434 break;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1435
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1436 case NSScrollerDecrementPage:
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
1437 newpos -= visible;
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1438 if(newpos < 0)
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1439 {
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1440 newpos = 0;
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1441 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1442 break;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1443
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1444 case NSScrollerIncrementPage:
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
1445 newpos += visible;
712
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
1446 if(newpos > max)
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1447 {
712
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
1448 newpos = max;
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1449 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1450 break;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1451
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1452 default:
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
1453 ; /* do nothing */
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1454 }
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
1455 int newposi = (int)newpos;
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
1456 newpos = (newpos - (double)newposi) > 0.5 ? (double)(newposi + 1) : (double)newposi;
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1457 if(newpos != result)
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1458 {
923
0ac67b62b594 Fix int to double conversion issues causing scrollbar issues on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 922
diff changeset
1459 [self setDoubleValue:(newpos/max)];
0ac67b62b594 Fix int to double conversion issues causing scrollbar issues on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 922
diff changeset
1460 }
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
1461 _event_handler(self, DW_INT_TO_POINTER((int)newpos), 14);
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1462 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1463 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1464 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1465
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1466 /* Subclass for a MLE type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1467 @interface DWMLE : NSTextView
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1468 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1469 void *userdata;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
1470 id scrollview;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1471 }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1472 -(void *)userdata;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1473 -(void)setUserdata:(void *)input;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
1474 -(id)scrollview;
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
1475 -(void)setScrollview:(id)input;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1476 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1477
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1478 @implementation DWMLE
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1479 -(void *)userdata { return userdata; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1480 -(void)setUserdata:(void *)input { userdata = input; }
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
1481 -(id)scrollview { return scrollview; }
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
1482 -(void)setScrollview:(id)input { scrollview = input; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1483 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1484 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1485
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1486 /* Subclass NSTextFieldCell for displaying image and text */
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1487 @interface DWImageAndTextCell : NSTextFieldCell
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1488 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1489 @private
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1490 NSImage *image;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1491 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1492 -(void)setImage:(NSImage *)anImage;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1493 -(NSImage *)image;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1494 -(void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1495 -(NSSize)cellSize;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1496 @end
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1497
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1498 @implementation DWImageAndTextCell
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
1499 -(void)dealloc
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1500 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1501 [image release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1502 image = nil;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1503 [super dealloc];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1504 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1505 -copyWithZone:(NSZone *)zone
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1506 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1507 DWImageAndTextCell *cell = (DWImageAndTextCell *)[super copyWithZone:zone];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1508 cell->image = [image retain];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1509 return cell;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1510 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1511 -(void)setImage:(NSImage *)anImage
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1512 {
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
1513 if(anImage != image)
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1514 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1515 [image release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1516 image = [anImage retain];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1517 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1518 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1519 -(NSImage *)image
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1520 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1521 return [[image retain] autorelease];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1522 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1523 -(NSRect)imageFrameForCellFrame:(NSRect)cellFrame
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1524 {
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
1525 if(image != nil)
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1526 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1527 NSRect imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1528 imageFrame.size = [image size];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1529 imageFrame.origin = cellFrame.origin;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1530 imageFrame.origin.x += 3;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1531 imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1532 return imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1533 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1534 else
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1535 return NSZeroRect;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1536 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1537 -(void)editWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject event:(NSEvent *)theEvent
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1538 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1539 NSRect textFrame, imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1540 NSDivideRect (aRect, &imageFrame, &textFrame, 3 + [image size].width, NSMinXEdge);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1541 [super editWithFrame: textFrame inView: controlView editor:textObj delegate:anObject event: theEvent];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1542 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1543 -(void)selectWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject start:(NSInteger)selStart length:(NSInteger)selLength
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1544 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1545 NSRect textFrame, imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1546 NSDivideRect (aRect, &imageFrame, &textFrame, 3 + [image size].width, NSMinXEdge);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1547 [super selectWithFrame: textFrame inView: controlView editor:textObj delegate:anObject start:selStart length:selLength];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1548 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1549 -(void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1550 {
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
1551 if(image != nil)
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
1552 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1553 NSSize imageSize;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1554 NSRect imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1555
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1556 imageSize = [image size];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1557 NSDivideRect(cellFrame, &imageFrame, &cellFrame, 3 + imageSize.width, NSMinXEdge);
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
1558 if ([self drawsBackground])
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
1559 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1560 [[self backgroundColor] set];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1561 NSRectFill(imageFrame);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1562 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1563 imageFrame.origin.x += 3;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1564 imageFrame.size = imageSize;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1565
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1566 if ([controlView isFlipped])
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1567 imageFrame.origin.y += ceil((cellFrame.size.height + imageFrame.size.height) / 2);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1568 else
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1569 imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1570
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1571 [image compositeToPoint:imageFrame.origin operation:NSCompositeSourceOver];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1572 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1573 [super drawWithFrame:cellFrame inView:controlView];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1574 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1575 -(NSSize)cellSize
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1576 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1577 NSSize cellSize = [super cellSize];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1578 cellSize.width += (image ? [image size].width : 0) + 3;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1579 return cellSize;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1580 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1581 @end
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1582
655
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
1583 /* Subclass for a Container/List type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1584 @interface DWContainer : NSTableView
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
1585 #ifdef BUILDING_FOR_SNOW_LEOPARD
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
1586 <NSTableViewDataSource,NSTableViewDelegate>
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1587 #endif
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1588 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1589 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1590 NSMutableArray *tvcols;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1591 NSMutableArray *data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1592 NSMutableArray *types;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1593 NSPointerArray *titles;
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1594 NSColor *fgcolor, *oddcolor, *evencolor;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1595 int lastAddPoint, lastQueryPoint;
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
1596 id scrollview;
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
1597 int filesystem;
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1598 }
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1599 -(NSInteger)numberOfRowsInTableView:(NSTableView *)aTable;
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1600 -(id)tableView:(NSTableView *)aTable objectValueForTableColumn:(NSTableColumn *)aCol row:(NSInteger)aRow;
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
1601 -(BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1602 -(void *)userdata;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1603 -(void)setUserdata:(void *)input;
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
1604 -(void)setFilesystem:(int)input;
831
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
1605 -(int)filesystem;
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
1606 -(id)scrollview;
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
1607 -(void)setScrollview:(id)input;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1608 -(void)addColumn:(NSTableColumn *)input andType:(int)type;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
1609 -(NSTableColumn *)getColumn:(int)col;
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1610 -(int)addRow:(NSArray *)input;
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1611 -(int)addRows:(int)number;
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
1612 -(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1613 -(void)editCell:(id)input at:(int)row and:(int)col;
662
d7badd5606ca Removed the Carbon source file, and changes to configure to build the Cocoa version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 661
diff changeset
1614 -(void)removeRow:(int)row;
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1615 -(void)setRow:(int)row title:(void *)input;
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1616 -(void *)getRowTitle:(int)row;
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
1617 -(id)getRow:(int)row and:(int)col;
662
d7badd5606ca Removed the Carbon source file, and changes to configure to build the Cocoa version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 661
diff changeset
1618 -(int)cellType:(int)col;
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1619 -(int)lastAddPoint;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
1620 -(int)lastQueryPoint;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
1621 -(void)setLastQueryPoint:(int)input;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1622 -(void)clear;
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1623 -(void)setup;
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1624 -(void)optimize;
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
1625 -(void)setForegroundColor:(NSColor *)input;
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
1626 -(void)doubleClicked:(id)sender;
829
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
1627 -(void)keyUp:(NSEvent *)theEvent;
867
139acecd6ca0 Guess I wanted to trap didClickTableColumn instead of mouseDownInHeaderOfTableColumn to avoid spurious events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 866
diff changeset
1628 -(void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn;
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1629 -(void)selectionChanged:(id)sender;
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1630 -(NSMenu *)menuForEvent:(NSEvent *)event;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1631 @end
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1632
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1633 @implementation DWContainer
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1634 -(NSInteger)numberOfRowsInTableView:(NSTableView *)aTable
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1635 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1636 if(tvcols && data)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1637 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1638 int cols = (int)[tvcols count];
1134
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1639 int total = (int)[data count];
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1640 if(cols && total)
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1641 {
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1642 return total / cols;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1643 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1644 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1645 return 0;
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1646 }
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1647 -(id)tableView:(NSTableView *)aTable objectValueForTableColumn:(NSTableColumn *)aCol row:(NSInteger)aRow
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1648 {
1134
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1649 if(tvcols && data)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1650 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1651 int z, col = -1;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1652 int count = (int)[tvcols count];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1653
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1654 for(z=0;z<count;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1655 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1656 if([tvcols objectAtIndex:z] == aCol)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1657 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1658 col = z;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1659 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1660 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1661 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1662 if(col != -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1663 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1664 int index = (int)(aRow * count) + col;
1134
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1665 if(index < [data count])
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1666 {
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1667 id this = [data objectAtIndex:index];
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1668 return ([this isKindOfClass:[NSNull class]]) ? nil : this;
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1669 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1670 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1671 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1672 return nil;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1673 }
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
1674 -(BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex { return NO; }
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1675 -(void *)userdata { return userdata; }
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1676 -(void)setUserdata:(void *)input { userdata = input; }
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
1677 -(void)setFilesystem:(int)input { filesystem = input; }
831
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
1678 -(int)filesystem { return filesystem; }
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1679 -(id)scrollview { return scrollview; }
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1680 -(void)setScrollview:(id)input { scrollview = input; }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1681 -(void)addColumn:(NSTableColumn *)input andType:(int)type { if(tvcols) { [tvcols addObject:input]; [types addObject:[NSNumber numberWithInt:type]]; } }
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
1682 -(NSTableColumn *)getColumn:(int)col { if(tvcols) { return [tvcols objectAtIndex:col]; } return nil; }
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1683 -(void)setRowBgOdd:(unsigned long)oddcol andEven:(unsigned long)evencol
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1684 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1685 NSColor *oldodd = oddcolor;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1686 NSColor *oldeven = evencolor;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1687 unsigned long _odd = _get_color(oddcol);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1688 unsigned long _even = _get_color(evencol);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1689
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1690 /* Get the NSColor for non-default colors */
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
1691 if(oddcol != DW_RGB_TRANSPARENT)
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1692 oddcolor = [[NSColor colorWithDeviceRed: DW_RED_VALUE(_odd)/255.0 green: DW_GREEN_VALUE(_odd)/255.0 blue: DW_BLUE_VALUE(_odd)/255.0 alpha: 1] retain];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1693 else
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1694 oddcolor = NULL;
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
1695 if(evencol != DW_RGB_TRANSPARENT)
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1696 evencolor = [[NSColor colorWithDeviceRed: DW_RED_VALUE(_even)/255.0 green: DW_GREEN_VALUE(_even)/255.0 blue: DW_BLUE_VALUE(_even)/255.0 alpha: 1] retain];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1697 else
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1698 evencolor = NULL;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1699 [oldodd release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1700 [oldeven release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1701 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1702 -(int)insertRow:(NSArray *)input at:(int)index
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1703 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1704 if(data)
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1705 {
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
1706 unsigned long start = [tvcols count] * index;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1707 NSIndexSet *set = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(start, start + [tvcols count])];
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
1708 if(index < lastAddPoint)
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
1709 {
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
1710 lastAddPoint++;
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
1711 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1712 [data insertObjects:input atIndexes:set];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1713 [titles insertPointer:NULL atIndex:index];
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
1714 [set release];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1715 return (int)[titles count];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1716 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1717 return 0;
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1718 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1719 -(int)addRow:(NSArray *)input
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1720 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1721 if(data)
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1722 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1723 lastAddPoint = (int)[titles count];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1724 [data addObjectsFromArray:input];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1725 [titles addPointer:NULL];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1726 return (int)[titles count];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1727 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1728 return 0;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
1729 }
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1730 -(int)addRows:(int)number
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1731 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1732 if(tvcols)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1733 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1734 int count = (int)(number * [tvcols count]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1735 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1736
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1737 lastAddPoint = (int)[titles count];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1738
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1739 for(z=0;z<count;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1740 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1741 [data addObject:[NSNull null]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1742 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1743 for(z=0;z<number;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1744 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1745 [titles addPointer:NULL];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1746 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1747 return (int)[titles count];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1748 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1749 return 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1750 }
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
1751 -(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
1752 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1753 DWImageAndTextCell *bcell = cell;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1754
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1755 /* Handle drawing image and text if necessary */
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1756 if([cell isMemberOfClass:[DWImageAndTextCell class]])
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
1757 {
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
1758 int index = (int)(row * [tvcols count]);
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1759 DWImageAndTextCell *browsercell = [data objectAtIndex:index];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
1760 NSImage *img = [browsercell image];
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1761 [bcell setImage:img];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1762 }
1215
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1763 if([cell isKindOfClass:[NSTextFieldCell class]])
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1764 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1765 /* Handle drawing alternating row colors if enabled */
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1766 if ((row % 2) == 0)
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1767 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1768 if(evencolor)
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1769 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1770 [bcell setDrawsBackground:YES];
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1771 [bcell setBackgroundColor:evencolor];
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1772 }
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1773 else
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1774 [bcell setDrawsBackground:NO];
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1775 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1776 else
1215
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1777 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1778 if(oddcolor)
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1779 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1780 [bcell setDrawsBackground:YES];
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1781 [bcell setBackgroundColor:oddcolor];
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1782 }
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1783 else
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1784 [bcell setDrawsBackground:NO];
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1785 }
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
1786 }
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
1787 }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1788 -(void)editCell:(id)input at:(int)row and:(int)col
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1789 {
1288
d10969835d2d Changes to allow removing icon on BITMAPORICON container columns on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1279
diff changeset
1790 if(tvcols)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1791 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1792 int index = (int)(row * [tvcols count]) + col;
934
13384e89964c Put in a bounds check just on a hunch when editing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 933
diff changeset
1793 if(index < [data count])
13384e89964c Put in a bounds check just on a hunch when editing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 933
diff changeset
1794 {
1288
d10969835d2d Changes to allow removing icon on BITMAPORICON container columns on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1279
diff changeset
1795 if(!input)
d10969835d2d Changes to allow removing icon on BITMAPORICON container columns on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1279
diff changeset
1796 input = [NSNull null];
934
13384e89964c Put in a bounds check just on a hunch when editing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 933
diff changeset
1797 [data replaceObjectAtIndex:index withObject:input];
13384e89964c Put in a bounds check just on a hunch when editing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 933
diff changeset
1798 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1799 }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1800 }
662
d7badd5606ca Removed the Carbon source file, and changes to configure to build the Cocoa version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 661
diff changeset
1801 -(void)removeRow:(int)row
d7badd5606ca Removed the Carbon source file, and changes to configure to build the Cocoa version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 661
diff changeset
1802 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1803 if(tvcols)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1804 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1805 int z, start, end;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1806 int count = (int)[tvcols count];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1807
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1808 start = count * row;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1809 end = start + count;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1810
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1811 for(z=start;z<end;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1812 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1813 [data removeObjectAtIndex:z];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1814 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1815 [titles removePointerAtIndex:row];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1816 if(lastAddPoint > 0 && lastAddPoint < row)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1817 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1818 lastAddPoint--;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1819 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1820 }
662
d7badd5606ca Removed the Carbon source file, and changes to configure to build the Cocoa version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 661
diff changeset
1821 }
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1822 -(void)setRow:(int)row title:(void *)input { if(titles && input) { [titles replacePointerAtIndex:row withPointer:input]; } }
683
7385011c3327 Fixed a minor issue causing crashes when right clicking on an empty container.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 682
diff changeset
1823 -(void *)getRowTitle:(int)row { if(titles && row > -1) { return [titles pointerAtIndex:row]; } return NULL; }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
1824 -(id)getRow:(int)row and:(int)col { if(data) { int index = (int)(row * [tvcols count]) + col; return [data objectAtIndex:index]; } return nil; }
662
d7badd5606ca Removed the Carbon source file, and changes to configure to build the Cocoa version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 661
diff changeset
1825 -(int)cellType:(int)col { return [[types objectAtIndex:col] intValue]; }
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1826 -(int)lastAddPoint { return lastAddPoint; }
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
1827 -(int)lastQueryPoint { return lastQueryPoint; }
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
1828 -(void)setLastQueryPoint:(int)input { lastQueryPoint = input; }
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1829 -(void)clear { if(data) { [data removeAllObjects]; while([titles count]) { [titles removePointerAtIndex:0]; } } lastAddPoint = 0; }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1830 -(void)setup
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1831 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1832 tvcols = [[[NSMutableArray alloc] init] retain];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1833 data = [[[NSMutableArray alloc] init] retain];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1834 types = [[[NSMutableArray alloc] init] retain];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1835 titles = [[NSPointerArray pointerArrayWithWeakObjects] retain];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1836 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(selectionChanged:) name:NSTableViewSelectionDidChangeNotification object:self];
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1837 }
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1838 -(void)optimize
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1839 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1840 if(tvcols)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1841 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1842 int z;
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1843 int colcount = (int)[tvcols count];
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1844 int rowcount = (int)[self numberOfRowsInTableView:self];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1845
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1846 for(z=0;z<colcount;z++)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1847 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1848 NSTableColumn *column = [tvcols objectAtIndex:z];
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1849 if([column resizingMask] != NSTableColumnNoResizing)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1850 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1851 if(rowcount > 0)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1852 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1853 int x;
1135
6828a01ecf3c Include the header column text width during container optimize on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1134
diff changeset
1854 NSCell *colcell = [column headerCell];
6828a01ecf3c Include the header column text width during container optimize on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1134
diff changeset
1855 int width = [colcell cellSize].width;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1856
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1857 for(x=0;x<rowcount;x++)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1858 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1859 NSCell *cell = [self preparedCellAtColumn:z row:x];
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1860 int thiswidth = [cell cellSize].width;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1861
866
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
1862 /* Check the image inside the cell to get its width */
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
1863 if([cell isMemberOfClass:[NSImageCell class]])
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
1864 {
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
1865 int index = (int)(x * [tvcols count]) + z;
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
1866 NSImage *image = [data objectAtIndex:index];
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
1867 if([image isMemberOfClass:[NSImage class]])
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
1868 {
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
1869 thiswidth = [image size].width;
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
1870 }
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
1871 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1872
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1873 if(thiswidth > width)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1874 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1875 width = thiswidth;
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1876 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1877 }
866
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
1878 /* If the image is missing default the optimized width to 16. */
864
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
1879 if(!width && [[types objectAtIndex:z] intValue] & DW_CFA_BITMAPORICON)
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
1880 {
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
1881 width = 16;
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
1882 }
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
1883 /* Sanity check... don't set the width to 0 */
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
1884 if(width)
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
1885 {
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
1886 [column setWidth:width];
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
1887 }
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1888 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1889 else
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1890 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1891 [column sizeToFit];
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1892 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1893 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1894 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1895 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
1896 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1897 -(void)setForegroundColor:(NSColor *)input
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
1898 {
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
1899 int z, count = (int)[tvcols count];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1900
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1901 fgcolor = input;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1902 [fgcolor retain];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1903
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
1904 for(z=0;z<count;z++)
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
1905 {
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
1906 NSTableColumn *tableColumn = [tvcols objectAtIndex:z];
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
1907 NSTextFieldCell *cell = [tableColumn dataCell];
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
1908 [cell setTextColor:fgcolor];
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
1909 }
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
1910 }
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
1911 -(void)doubleClicked:(id)sender
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
1912 {
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
1913 /* Handler for container class */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1914 _event_handler(self, (NSEvent *)[self getRowTitle:(int)[self selectedRow]], 9);
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
1915 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1916 -(void)keyUp:(NSEvent *)theEvent
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1917 {
829
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
1918 if([[theEvent charactersIgnoringModifiers] characterAtIndex:0] == VK_RETURN)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1919 {
829
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
1920 _event_handler(self, (NSEvent *)[self getRowTitle:(int)[self selectedRow]], 9);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1921 }
829
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
1922 [super keyUp:theEvent];
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
1923 }
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
1924
867
139acecd6ca0 Guess I wanted to trap didClickTableColumn instead of mouseDownInHeaderOfTableColumn to avoid spurious events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 866
diff changeset
1925 -(void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
1926 {
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
1927 NSUInteger index = [tvcols indexOfObject:tableColumn];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1928
803
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
1929 /* Handler for column click class */
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
1930 _event_handler(self, (NSEvent *)index, 17);
803
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
1931 }
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1932 -(void)selectionChanged:(id)sender
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1933 {
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1934 /* Handler for container class */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1935 _event_handler(self, (NSEvent *)[self getRowTitle:(int)[self selectedRow]], 12);
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1936 /* Handler for listbox class */
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
1937 _event_handler(self, DW_INT_TO_POINTER((int)[self selectedRow]), 11);
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1938 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1939 -(NSMenu *)menuForEvent:(NSEvent *)event
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1940 {
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
1941 int row;
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
1942 NSPoint where = [self convertPoint:[event locationInWindow] fromView:nil];
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
1943 row = (int)[self rowAtPoint:where];
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
1944 _event_handler(self, (NSEvent *)[self getRowTitle:row], 10);
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
1945 return nil;
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1946 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1947 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1948 @end
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1949
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
1950 /* Dive into the tree freeing all desired child nodes */
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
1951 void _free_tree_recurse(NSMutableArray *node, NSMutableArray *item)
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
1952 {
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
1953 if(node && ([node isKindOfClass:[NSArray class]]))
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1954 {
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1955 int count = (int)[node count];
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
1956 NSInteger index = -1;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1957 int z;
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
1958
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
1959 if(item)
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
1960 index = [node indexOfObject:item];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1961
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1962 for(z=0;z<count;z++)
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1963 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
1964 NSMutableArray *pnt = [node objectAtIndex:z];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
1965 NSMutableArray *children = nil;
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
1966
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
1967 if(pnt && [pnt isKindOfClass:[NSArray class]])
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
1968 {
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
1969 children = (NSMutableArray *)[pnt objectAtIndex:3];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
1970 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1971
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
1972 if(z == index)
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1973 {
1048
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
1974 _free_tree_recurse(children, NULL);
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
1975 [node removeObjectAtIndex:z];
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
1976 count = (int)[node count];
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
1977 index = -1;
1048
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
1978 z--;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1979 }
1048
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
1980 else if(item == NULL)
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
1981 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
1982 NSString *oldstr = [pnt objectAtIndex:1];
1048
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
1983 [oldstr release];
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
1984 _free_tree_recurse(children, item);
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
1985 }
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
1986 else
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
1987 _free_tree_recurse(children, item);
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1988 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1989 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1990 if(!item)
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1991 {
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1992 [node release];
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1993 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1994 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
1995
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
1996 /* Subclass for a Tree type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1997 @interface DWTree : NSOutlineView
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
1998 #ifdef BUILDING_FOR_SNOW_LEOPARD
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
1999 <NSOutlineViewDataSource,NSOutlineViewDelegate>
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2000 #endif
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2001 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2002 void *userdata;
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2003 NSTableColumn *treecol;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2004 NSMutableArray *data;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2005 /* Each data item consists of a linked lists of tree item data.
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2006 * NSImage *, NSString *, Item Data *, NSMutableArray * of Children
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2007 */
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2008 id scrollview;
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2009 NSColor *fgcolor;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2010 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2011 -(id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2012 -(BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2013 -(int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2014 -(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item;
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2015 -(void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item;
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2016 -(BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableColumn *)tableColumn item:(id)item;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2017 -(void)addTree:(NSMutableArray *)item and:(NSMutableArray *)parent after:(NSMutableArray *)after;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2018 -(void *)userdata;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2019 -(void)setUserdata:(void *)input;
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
2020 -(void)treeSelectionChanged:(id)sender;
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2021 -(void)treeItemExpanded:(NSNotification *)notification;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2022 -(NSScrollView *)scrollview;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2023 -(void)setScrollview:(NSScrollView *)input;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2024 -(void)deleteNode:(NSMutableArray *)item;
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2025 -(void)setForegroundColor:(NSColor *)input;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2026 -(void)clear;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2027 @end
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2028
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2029 @implementation DWTree
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2030 -(id)init
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2031 {
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2032 self = [super init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2033
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2034 if (self)
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2035 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2036 treecol = [[NSTableColumn alloc] init];
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2037 DWImageAndTextCell *browsercell = [[[DWImageAndTextCell alloc] init] autorelease];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2038 [treecol setDataCell:browsercell];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2039 [self addTableColumn:treecol];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2040 [self setOutlineTableColumn:treecol];
743
4462bc7de1e3 Possible fix for container (and possibly tree) controls picking up combobox events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 742
diff changeset
2041 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(treeSelectionChanged:) name:NSOutlineViewSelectionDidChangeNotification object:self];
4462bc7de1e3 Possible fix for container (and possibly tree) controls picking up combobox events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 742
diff changeset
2042 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(treeItemExpanded:) name:NSOutlineViewItemDidExpandNotification object:self];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2043 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2044 return self;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2045 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2046 -(id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2047 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2048 if(item)
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2049 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2050 NSMutableArray *array = [item objectAtIndex:3];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2051 return ([array isKindOfClass:[NSNull class]]) ? nil : [array objectAtIndex:index];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2052 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2053 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2054 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2055 return [data objectAtIndex:index];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2056 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2057 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2058 -(BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2059 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2060 return [self outlineView:outlineView numberOfChildrenOfItem:item] != 0;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2061 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2062 -(int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2063 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2064 if(item)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2065 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2066 if([item isKindOfClass:[NSMutableArray class]])
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2067 {
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2068 NSMutableArray *array = [item objectAtIndex:3];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2069 return ([array isKindOfClass:[NSNull class]]) ? 0 : (int)[array count];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2070 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2071 else
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2072 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2073 return 0;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2074 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2075 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2076 else
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2077 {
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2078 return data ? (int)[data count] : 0;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2079 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2080 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2081 -(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2082 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2083 if(item)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2084 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2085 if([item isKindOfClass:[NSMutableArray class]])
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2086 {
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2087 NSMutableArray *this = (NSMutableArray *)item;
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2088 return [this objectAtIndex:1];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2089 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2090 else
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2091 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2092 return nil;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2093 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2094 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2095 return @"List Root";
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2096 }
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2097 -(void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2098 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2099 if([cell isMemberOfClass:[DWImageAndTextCell class]])
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2100 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2101 NSMutableArray *this = (NSMutableArray *)item;
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2102 NSImage *img = [this objectAtIndex:0];
1067
6ca1132a240e Allow tree nodes without icons using the new NSMutableArray tree code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1065
diff changeset
2103 if([img isKindOfClass:[NSImage class]])
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2104 [(DWImageAndTextCell*)cell setImage:img];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2105 }
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2106 }
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2107 -(BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableColumn *)tableColumn item:(id)item { return NO; }
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2108 -(void)addTree:(NSMutableArray *)item and:(NSMutableArray *)parent after:(NSMutableArray *)after
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2109 {
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2110 NSMutableArray *children = data;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2111 if(parent)
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2112 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2113 children = [parent objectAtIndex:3];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2114 if([children isKindOfClass:[NSNull class]])
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2115 {
692
bd909322f40d Added "retain"s to the DWTree/DWContainer/DWListBox classes memory allocation
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 691
diff changeset
2116 children = [[[NSMutableArray alloc] init] retain];
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2117 [parent replaceObjectAtIndex:3 withObject:children];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2118 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2119 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2120 else
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2121 {
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2122 if(!data)
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2123 {
692
bd909322f40d Added "retain"s to the DWTree/DWContainer/DWListBox classes memory allocation
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 691
diff changeset
2124 children = data = [[[NSMutableArray alloc] init] retain];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2125 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2126 }
1064
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
2127 if(after)
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
2128 {
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
2129 NSInteger index = [children indexOfObject:after];
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2130 int count = (int)[children count];
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2131 if(index != NSNotFound && (index+1) < count)
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2132 [children insertObject:item atIndex:(index+1)];
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2133 else
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2134 [children addObject:item];
1064
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
2135 }
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
2136 else
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
2137 {
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
2138 [children addObject:item];
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
2139 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2140 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2141 -(void *)userdata { return userdata; }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2142 -(void)setUserdata:(void *)input { userdata = input; }
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
2143 -(void)treeSelectionChanged:(id)sender
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
2144 {
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2145 /* Handler for tree class */
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
2146 id item = [self itemAtRow:[self selectedRow]];
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
2147
713
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
2148 if(item)
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
2149 {
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
2150 _event_handler(self, (void *)item, 12);
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
2151 }
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2152 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2153 -(void)treeItemExpanded:(NSNotification *)notification
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2154 {
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2155 id item = [[notification userInfo ] objectForKey: @"NSObject"];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2156
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2157 if(item)
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2158 {
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2159 _event_handler(self, (void *)item, 16);
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2160 }
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2161 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2162 -(NSMenu *)menuForEvent:(NSEvent *)event
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2163 {
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2164 int row;
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2165 NSPoint where = [self convertPoint:[event locationInWindow] fromView:nil];
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2166 row = (int)[self rowAtPoint:where];
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2167 id item = [self itemAtRow:row];
1061
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
2168 _event_handler(self, (NSEvent *)item, 10);
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2169 return nil;
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
2170 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2171 -(NSScrollView *)scrollview { return scrollview; }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2172 -(void)setScrollview:(NSScrollView *)input { scrollview = input; }
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2173 -(void)deleteNode:(NSMutableArray *)item { _free_tree_recurse(data, item); }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2174 -(void)setForegroundColor:(NSColor *)input
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2175 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2176 NSTextFieldCell *cell = [treecol dataCell];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2177 fgcolor = input;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2178 [fgcolor retain];
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2179 [cell setTextColor:fgcolor];
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2180 }
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2181 -(void)clear { NSMutableArray *toclear = data; data = nil; _free_tree_recurse(toclear, NULL); [self reloadData]; }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2182 -(void)dealloc
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2183 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2184 UserData *root = userdata;
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2185 _remove_userdata(&root, NULL, TRUE);
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2186 _free_tree_recurse(data, NULL);
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2187 [treecol release];
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
2188 dw_signal_disconnect_by_window(self);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2189 [super dealloc];
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2190 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2191 @end
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2192
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2193 /* Subclass for a Calendar type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2194 @interface DWCalendar : NSDatePicker
655
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2195 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2196 void *userdata;
655
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2197 }
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2198 -(void *)userdata;
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2199 -(void)setUserdata:(void *)input;
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2200 @end
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2201
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2202 @implementation DWCalendar
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2203 -(void *)userdata { return userdata; }
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2204 -(void)setUserdata:(void *)input { userdata = input; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
2205 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
655
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2206 @end
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2207
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2208 /* Subclass for a Combobox type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2209 @interface DWComboBox : NSComboBox
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
2210 #ifdef BUILDING_FOR_SNOW_LEOPARD
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2211 <NSComboBoxDelegate>
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2212 #endif
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2213 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2214 void *userdata;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
2215 id clickDefault;
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2216 }
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2217 -(void *)userdata;
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2218 -(void)setUserdata:(void *)input;
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
2219 -(void)comboBoxSelectionDidChange:(NSNotification *)not;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
2220 -(void)setClickDefault:(id)input;
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2221 @end
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2222
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2223 @implementation DWComboBox
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2224 -(void *)userdata { return userdata; }
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2225 -(void)setUserdata:(void *)input { userdata = input; }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
2226 -(void)comboBoxSelectionDidChange:(NSNotification *)not { _event_handler(self, (void *)[self indexOfSelectedItem], 11); }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
2227 -(void)setClickDefault:(id)input { clickDefault = input; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2228 -(void)keyUp:(NSEvent *)theEvent
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2229 {
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
2230 if(clickDefault && [[theEvent charactersIgnoringModifiers] characterAtIndex:0] == VK_RETURN)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2231 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2232 [[self window] makeFirstResponder:clickDefault];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2233 } else
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2234 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2235 [super keyUp:theEvent];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2236 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
2237 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
2238 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2239 @end
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2240
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2241 /* Subclass for a stepper component of the spinbutton type */
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2242 /* This is a bad way of doing this... but I can't get the other methods to work */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2243 @interface DWStepper : NSStepper
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2244 {
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2245 id textfield;
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
2246 id parent;
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2247 }
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2248 -(void)setTextfield:(id)input;
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2249 -(id)textfield;
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
2250 -(void)setParent:(id)input;
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
2251 -(id)parent;
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2252 -(void)mouseDown:(NSEvent *)event;
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2253 -(void)mouseUp:(NSEvent *)event;
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2254 @end
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2255
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2256 @implementation DWStepper
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2257 -(void)setTextfield:(id)input { textfield = input; }
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2258 -(id)textfield { return textfield; }
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
2259 -(void)setParent:(id)input { parent = input; }
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
2260 -(id)parent { return parent; }
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2261 -(void)mouseDown:(NSEvent *)event
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2262 {
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2263 [super mouseDown:event];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2264 if([[NSApp currentEvent] type] == NSLeftMouseUp)
1302
5fbf384780d1 Simplified the DWStepper class a bit on Mac... although it really needs rewriting.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1301
diff changeset
2265 [self mouseUp:event];
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2266 }
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2267 -(void)mouseUp:(NSEvent *)event
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2268 {
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2269 [textfield takeIntValueFrom:self];
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
2270 _event_handler(parent, (void *)[self integerValue], 14);
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2271 }
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2272 @end
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2273
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2274 /* Subclass for a Spinbutton type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2275 @interface DWSpinButton : NSView
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
2276 #ifdef BUILDING_FOR_SNOW_LEOPARD
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2277 <NSTextFieldDelegate>
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2278 #endif
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2279 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2280 void *userdata;
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2281 NSTextField *textfield;
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2282 DWStepper *stepper;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
2283 id clickDefault;
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2284 }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2285 -(id)init;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2286 -(void *)userdata;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2287 -(void)setUserdata:(void *)input;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2288 -(NSTextField *)textfield;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2289 -(NSStepper *)stepper;
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2290 -(void)controlTextDidChange:(NSNotification *)aNotification;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
2291 -(void)setClickDefault:(id)input;
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2292 @end
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2293
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2294 @implementation DWSpinButton
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2295 -(id)init
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2296 {
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2297 self = [super init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2298
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2299 if(self)
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2300 {
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
2301 textfield = [[[NSTextField alloc] init] autorelease];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2302 [self addSubview:textfield];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
2303 stepper = [[[DWStepper alloc] init] autorelease];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2304 [self addSubview:stepper];
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
2305 [stepper setParent:self];
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2306 [stepper setTextfield:textfield];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2307 [textfield takeIntValueFrom:stepper];
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2308 [textfield setDelegate:self];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2309 }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2310 return self;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2311 }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2312 -(void *)userdata { return userdata; }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2313 -(void)setUserdata:(void *)input { userdata = input; }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2314 -(NSTextField *)textfield { return textfield; }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2315 -(NSStepper *)stepper { return stepper; }
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2316 -(void)controlTextDidChange:(NSNotification *)aNotification
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2317 {
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2318 [stepper takeIntValueFrom:textfield];
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
2319 [textfield takeIntValueFrom:stepper];
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
2320 _event_handler(self, (void *)[stepper integerValue], 14);
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
2321 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
2322 -(void)setClickDefault:(id)input { clickDefault = input; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2323 -(void)keyUp:(NSEvent *)theEvent
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2324 {
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
2325 if(clickDefault && [[theEvent charactersIgnoringModifiers] characterAtIndex:0] == VK_RETURN)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2326 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2327 [[self window] makeFirstResponder:clickDefault];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2328 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2329 else
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2330 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2331 [super keyUp:theEvent];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2332 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
2333 }
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
2334 -(void)performClick:(id)sender { [textfield performClick:sender]; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
2335 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2336 @end
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2337
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2338 /* Subclass for a MDI type
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
2339 * This is just a box for display purposes... but it is a
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
2340 * unique class so it can be identified when creating windows.
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
2341 */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
2342 @interface DWMDI : DWBox {}
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
2343 @end
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
2344
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
2345 @implementation DWMDI
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
2346 @end
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
2347
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2348 /* This function adds a signal handler callback into the linked list.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2349 */
688
b52f1d4a60dd Fixes for timers not working properly. Includes commented out test container code for threadsafety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 687
diff changeset
2350 void _new_signal(ULONG message, HWND window, int msgid, void *signalfunction, void *data)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2351 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2352 SignalHandler *new = malloc(sizeof(SignalHandler));
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2353
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2354 new->message = message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2355 new->window = window;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2356 new->id = msgid;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2357 new->signalfunction = signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2358 new->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2359 new->next = NULL;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2360
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2361 if (!Root)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2362 Root = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2363 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2364 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2365 SignalHandler *prev = NULL, *tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2366 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2367 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2368 if(tmp->message == message &&
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2369 tmp->window == window &&
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2370 tmp->id == msgid &&
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2371 tmp->signalfunction == signalfunction)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2372 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2373 tmp->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2374 free(new);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2375 return;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2376 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2377 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2378 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2379 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2380 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2381 prev->next = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2382 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2383 Root = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2384 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2385 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2386
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2387 /* Finds the message number for a given signal name */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2388 ULONG _findsigmessage(char *signame)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2389 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2390 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2391
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2392 for(z=0;z<SIGNALMAX;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2393 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2394 if(strcasecmp(signame, SignalTranslate[z].name) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2395 return SignalTranslate[z].message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2396 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2397 return 0L;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2398 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2399
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2400 unsigned long _foreground = 0xAAAAAA, _background = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2401
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2402 void _handle_resize_events(Box *thisbox)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2403 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2404 int z;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2405
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2406 for(z=0;z<thisbox->count;z++)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2407 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2408 id handle = thisbox->items[z].hwnd;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2409
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2410 if(thisbox->items[z].type == TYPEBOX)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2411 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2412 Box *tmp = [handle box];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2413
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2414 if(tmp)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2415 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2416 _handle_resize_events(tmp);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2417 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2418 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2419 else
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2420 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2421 if([handle isMemberOfClass:[DWRender class]])
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2422 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2423 DWRender *render = (DWRender *)handle;
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2424 NSSize oldsize = [render size];
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2425 NSSize newsize = [render frame].size;
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2426 NSWindow *window = [render window];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2427
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2428 if([window preferredBackingLocation] != NSWindowBackingLocationVideoMemory)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2429 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2430 [window setPreferredBackingLocation:NSWindowBackingLocationVideoMemory];
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2431 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2432
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2433 /* Eliminate duplicate configure requests */
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2434 if(oldsize.width != newsize.width || oldsize.height != newsize.height)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2435 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2436 if(newsize.width > 0 && newsize.height > 0)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2437 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2438 [render setSize:newsize];
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2439 _event_handler(handle, nil, 1);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2440 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2441 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2442 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2443 /* Special handling for notebook controls */
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2444 else if([handle isMemberOfClass:[DWNotebook class]])
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2445 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2446 DWNotebook *notebook = (DWNotebook *)handle;
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2447 DWNotebookPage *notepage = (DWNotebookPage *)[notebook selectedTabViewItem];
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2448 id view = [notepage view];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2449
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2450 if(view != nil)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2451 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2452 Box *box = [view box];
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2453 _handle_resize_events(box);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2454 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2455 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2456 /* Handle laying out scrollviews... if required space is less
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2457 * than available space, then expand. Otherwise use required space.
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2458 */
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2459 else if([handle isMemberOfClass:[DWScrollBox class]])
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2460 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2461 DWScrollBox *scrollbox = (DWScrollBox *)handle;
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2462 DWBox *contentbox = [scrollbox documentView];
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2463 Box *thisbox = [contentbox box];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2464
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2465 /* Get the required space for the box */
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2466 _handle_resize_events(thisbox);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2467 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2468 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2469 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2470 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2471
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2472 /* This function calculates how much space the widgets and boxes require
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2473 * and does expansion as necessary.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2474 */
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2475 static void _resize_box(Box *thisbox, int *depth, int x, int y, int pass)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2476 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2477 /* Current item position */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2478 int z, currentx = thisbox->pad, currenty = thisbox->pad;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2479 /* Used x, y and padding maximum values...
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2480 * These will be used to find the widest or
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2481 * tallest items in a box.
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2482 */
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2483 int uymax = 0, uxmax = 0;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2484 int upymax = 0, upxmax = 0;
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2485
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2486 /* Reset the box sizes */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2487 thisbox->minwidth = thisbox->minheight = thisbox->usedpadx = thisbox->usedpady = thisbox->pad * 2;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2488
798
1b0a0775ec19 Ok... groupbox calculation fix try #2!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 797
diff changeset
2489 /* Handle special groupbox case */
1b0a0775ec19 Ok... groupbox calculation fix try #2!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 797
diff changeset
2490 if(thisbox->grouphwnd)
1b0a0775ec19 Ok... groupbox calculation fix try #2!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 797
diff changeset
2491 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2492 /* Only calculate the size on the first pass...
1442
02a329b2b0cd Added groupbox perfomance improvement to Windows and OS/2 that was missed when importing from the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1438
diff changeset
2493 * use the cached values on second.
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2494 */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2495 if(pass == 1)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2496 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2497 DWGroupBox *groupbox = thisbox->grouphwnd;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2498 NSSize borderSize = [groupbox borderSize];
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2499 NSRect titleRect;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2500
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2501 if(borderSize.width == 0 || borderSize.height == 0)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2502 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2503 borderSize = [groupbox initBorder];
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2504 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2505 /* Get the title size for a more accurate groupbox padding size */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2506 titleRect = [groupbox titleRect];
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2507
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2508 thisbox->grouppadx = borderSize.width;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2509 thisbox->grouppady = borderSize.height + titleRect.size.height;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2510 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2511
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2512 thisbox->minwidth += thisbox->grouppadx;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2513 thisbox->usedpadx += thisbox->grouppadx;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2514 thisbox->minheight += thisbox->grouppady;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2515 thisbox->usedpady += thisbox->grouppady;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2516 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2517
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2518 /* Count up all the space for all items in the box */
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2519 for(z=0;z<thisbox->count;z++)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2520 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2521 int itempad, itemwidth, itemheight;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2522
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2523 if(thisbox->items[z].type == TYPEBOX)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2524 {
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
2525 id box = thisbox->items[z].hwnd;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2526 Box *tmp = [box box];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2527
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2528 if(tmp)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2529 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2530 /* On the first pass calculate the box contents */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2531 if(pass == 1)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2532 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2533 (*depth)++;
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2534
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2535 /* Save the newly calculated values on the box */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2536 _resize_box(tmp, depth, x, y, pass);
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2537
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2538 /* Duplicate the values in the item list for use below */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2539 thisbox->items[z].width = tmp->minwidth;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2540 thisbox->items[z].height = tmp->minheight;
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2541
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2542 /* If the box has no contents but is expandable... default the size to 1 */
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2543 if(!thisbox->items[z].width && thisbox->items[z].hsize)
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2544 thisbox->items[z].width = 1;
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2545 if(!thisbox->items[z].height && thisbox->items[z].vsize)
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2546 thisbox->items[z].height = 1;
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2547
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2548 (*depth)--;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2549 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2550 }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2551 }
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2552
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2553 /* Precalculate these values, since they will
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2554 * be used used repeatedly in the next section.
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2555 */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2556 itempad = thisbox->items[z].pad * 2;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2557 itemwidth = thisbox->items[z].width + itempad;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2558 itemheight = thisbox->items[z].height + itempad;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2559
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2560 /* Calculate the totals and maximums */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2561 if(thisbox->type == DW_VERT)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2562 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2563 if(itemwidth > uxmax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2564 uxmax = itemwidth;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2565
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2566 if(thisbox->items[z].hsize != SIZEEXPAND)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2567 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2568 if(itemwidth > upxmax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2569 upxmax = itemwidth;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2570 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2571 else
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2572 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2573 if(itempad > upxmax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2574 upxmax = itempad;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2575 }
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2576 thisbox->minheight += itemheight;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2577 if(thisbox->items[z].vsize != SIZEEXPAND)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2578 thisbox->usedpady += itemheight;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2579 else
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2580 thisbox->usedpady += itempad;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2581 }
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2582 else
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2583 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2584 if(itemheight > uymax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2585 uymax = itemheight;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2586 if(thisbox->items[z].vsize != SIZEEXPAND)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2587 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2588 if(itemheight > upymax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2589 upymax = itemheight;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2590 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2591 else
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2592 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2593 if(itempad > upymax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2594 upymax = itempad;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2595 }
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2596 thisbox->minwidth += itemwidth;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2597 if(thisbox->items[z].hsize != SIZEEXPAND)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2598 thisbox->usedpadx += itemwidth;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2599 else
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2600 thisbox->usedpadx += itempad;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2601 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2602 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2603
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2604 /* Add the maximums which were calculated in the previous loop */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2605 thisbox->minwidth += uxmax;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2606 thisbox->minheight += uymax;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2607 thisbox->usedpadx += upxmax;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2608 thisbox->usedpady += upymax;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2609
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2610 /* The second pass is for actual placement. */
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2611 if(pass > 1)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2612 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2613 for(z=0;z<(thisbox->count);z++)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2614 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2615 int height = thisbox->items[z].height;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2616 int width = thisbox->items[z].width;
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2617 int itempad = thisbox->items[z].pad * 2;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2618 int thispad = thisbox->pad * 2;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2619
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2620 /* Calculate the new sizes */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2621 if(thisbox->items[z].hsize == SIZEEXPAND)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2622 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2623 if(thisbox->type == DW_HORZ)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2624 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2625 int expandablex = thisbox->minwidth - thisbox->usedpadx;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2626
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2627 if(expandablex)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2628 width = (int)(((float)width / (float)expandablex) * (float)(x - thisbox->usedpadx));
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2629 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2630 else
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2631 width = x - (itempad + thispad + thisbox->grouppadx);
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2632 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2633 if(thisbox->items[z].vsize == SIZEEXPAND)
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
2634 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2635 if(thisbox->type == DW_VERT)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2636 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2637 int expandabley = thisbox->minheight - thisbox->usedpady;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2638
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2639 if(expandabley)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2640 height = (int)(((float)height / (float)expandabley) * (float)(y - thisbox->usedpady));
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2641 }
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2642 else
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2643 height = y - (itempad + thispad + thisbox->grouppady);
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2644 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2645
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2646 /* If the calculated size is valid... */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2647 if(height > 0 && width > 0)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2648 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2649 int pad = thisbox->items[z].pad;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2650 NSView *handle = thisbox->items[z].hwnd;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2651 NSPoint point;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2652 NSSize size;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2653
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2654 point.x = currentx + pad;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2655 point.y = currenty + pad;
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2656 size.width = width;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2657 size.height = height;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2658 [handle setFrameOrigin:point];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2659 [handle setFrameSize:size];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2660
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2661 /* After placing a box... place its components */
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2662 if(thisbox->items[z].type == TYPEBOX)
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
2663 {
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2664 id box = thisbox->items[z].hwnd;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2665 Box *tmp = [box box];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2666
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2667 if(tmp)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2668 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2669 (*depth)++;
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2670 _resize_box(tmp, depth, width, height, pass);
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2671 (*depth)--;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2672 }
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
2673 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2674
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2675 /* Special handling for notebook controls */
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2676 if([handle isMemberOfClass:[DWNotebook class]])
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
2677 {
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2678 DWNotebook *notebook = (DWNotebook *)handle;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2679 DWNotebookPage *notepage = (DWNotebookPage *)[notebook selectedTabViewItem];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2680 id view = [notepage view];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2681
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2682 if(view != nil)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2683 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2684 Box *box = [view box];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2685 NSSize size = [view frame].size;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2686 _do_resize(box, size.width, size.height);
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2687 _handle_resize_events(box);
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2688 }
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
2689 }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2690 /* Handle laying out scrollviews... if required space is less
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2691 * than available space, then expand. Otherwise use required space.
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2692 */
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2693 else if([handle isMemberOfClass:[DWScrollBox class]])
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2694 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2695 int depth = 0;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2696 DWScrollBox *scrollbox = (DWScrollBox *)handle;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2697 DWBox *contentbox = [scrollbox documentView];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2698 Box *thisbox = [contentbox box];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2699 NSSize contentsize = [scrollbox contentSize];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2700
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2701 /* Get the required space for the box */
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2702 _resize_box(thisbox, &depth, x, y, 1);
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2703
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2704 if(contentsize.width < thisbox->minwidth)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2705 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2706 contentsize.width = thisbox->minwidth;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2707 }
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2708 if(contentsize.height < thisbox->minheight)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2709 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2710 contentsize.height = thisbox->minheight;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2711 }
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2712 [contentbox setFrameSize:contentsize];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2713
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2714 /* Layout the content of the scrollbox */
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2715 _do_resize(thisbox, contentsize.width, contentsize.height);
929
d7e88ac1647c Removed some code that had been used for debugging the layout code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 928
diff changeset
2716 _handle_resize_events(thisbox);
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2717 }
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2718 /* Special handling for spinbutton controls */
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2719 else if([handle isMemberOfClass:[DWSpinButton class]])
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2720 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2721 DWSpinButton *spinbutton = (DWSpinButton *)handle;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2722 NSTextField *textfield = [spinbutton textfield];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2723 NSStepper *stepper = [spinbutton stepper];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2724 [textfield setFrameOrigin:NSMakePoint(0,0)];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2725 [textfield setFrameSize:NSMakeSize(size.width-20,size.height)];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2726 [stepper setFrameOrigin:NSMakePoint(size.width-20,0)];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2727 [stepper setFrameSize:NSMakeSize(20,size.height)];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2728 }
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
2729 else if([handle isMemberOfClass:[DWSplitBar class]])
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2730 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2731 DWSplitBar *split = (DWSplitBar *)handle;
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
2732 DWWindow *window = (DWWindow *)[split window];
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2733 float percent = [split percent];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2734
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
2735 if(percent > 0 && size.width > 20 && size.height > 20)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2736 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2737 dw_splitbar_set(handle, percent);
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2738 [split setPercent:0];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2739 }
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
2740 else if([window redraw])
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
2741 {
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
2742 [split splitViewDidResizeSubviews:nil];
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
2743 }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2744 }
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
2745
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
2746 /* Advance the current position in the box */
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2747 if(thisbox->type == DW_HORZ)
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2748 currentx += width + (pad * 2);
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2749 if(thisbox->type == DW_VERT)
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2750 currenty += height + (pad * 2);
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2751 }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2752 }
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2753 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2754 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2755
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2756 static void _do_resize(Box *thisbox, int x, int y)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2757 {
943
675c12b1b90e Changed check from x and y not being zero to x and y being greater than zero since it seems values can be negative on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 942
diff changeset
2758 if(x > 0 && y > 0)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2759 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2760 if(thisbox)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2761 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2762 int depth = 0;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2763
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2764 /* Calculate space requirements */
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2765 _resize_box(thisbox, &depth, x, y, 1);
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2766
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2767 /* Finally place all the boxes and controls */
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
2768 _resize_box(thisbox, &depth, x, y, 2);
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2769 }
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
2770 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2771 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2772
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2773 NSMenu *_generate_main_menu()
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2774 {
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
2775 NSString *applicationName = nil;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2776
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
2777 /* This only works on 10.6 so we have a backup method */
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
2778 #ifdef BUILDING_FOR_SNOW_LEOPARD
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
2779 applicationName = [[NSRunningApplication currentApplication] localizedName];
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2780 #endif
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
2781 if(applicationName == nil)
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
2782 {
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
2783 applicationName = [[NSProcessInfo processInfo] processName];
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
2784 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2785
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2786 /* Create the main menu */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2787 NSMenu * mainMenu = [[[NSMenu alloc] initWithTitle:@"MainMenu"] autorelease];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2788
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2789 NSMenuItem * mitem = [mainMenu addItemWithTitle:@"Apple" action:NULL keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2790 NSMenu * menu = [[[NSMenu alloc] initWithTitle:@"Apple"] autorelease];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2791
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2792 [DWApp performSelector:@selector(setAppleMenu:) withObject:menu];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2793
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2794 /* Setup the Application menu */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2795 NSMenuItem * item = [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"About", nil), applicationName]
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2796 action:@selector(orderFrontStandardAboutPanel:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2797 keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2798 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2799
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2800 [menu addItem:[NSMenuItem separatorItem]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2801
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2802 item = [menu addItemWithTitle:NSLocalizedString(@"Services", nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2803 action:NULL
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2804 keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2805 NSMenu * servicesMenu = [[[NSMenu alloc] initWithTitle:@"Services"] autorelease];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2806 [menu setSubmenu:servicesMenu forItem:item];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2807 [DWApp setServicesMenu:servicesMenu];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2808
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2809 [menu addItem:[NSMenuItem separatorItem]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2810
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2811 item = [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Hide", nil), applicationName]
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2812 action:@selector(hide:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2813 keyEquivalent:@"h"];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2814 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2815
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2816 item = [menu addItemWithTitle:NSLocalizedString(@"Hide Others", nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2817 action:@selector(hideOtherApplications:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2818 keyEquivalent:@"h"];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2819 [item setKeyEquivalentModifierMask:NSCommandKeyMask | NSAlternateKeyMask];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2820 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2821
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2822 item = [menu addItemWithTitle:NSLocalizedString(@"Show All", nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2823 action:@selector(unhideAllApplications:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2824 keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2825 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2826
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2827 [menu addItem:[NSMenuItem separatorItem]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2828
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2829 item = [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Quit", nil), applicationName]
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2830 action:@selector(terminate:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2831 keyEquivalent:@"q"];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2832 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2833
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2834 [mainMenu setSubmenu:menu forItem:mitem];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2835
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2836 return mainMenu;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2837 }
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2838
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2839 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2840 * Runs a message loop for Dynamic Windows.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2841 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2842 void API dw_main(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2843 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
2844 dw_mutex_lock(DWRunMutex);
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
2845 DWThread = dw_thread_id();
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2846 /* Make sure any queued redraws are handled */
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2847 _dw_redraw(0, FALSE);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2848 [DWApp run];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
2849 DWThread = (DWTID)-1;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
2850 dw_mutex_unlock(DWRunMutex);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2851 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2852
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2853 /*
1528
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
2854 * 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: 1527
diff changeset
2855 */
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
2856 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: 1527
diff changeset
2857 {
1529
92bed442620a Didn't notice that [NSApplication stop] took a sender parameter on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1528
diff changeset
2858 [DWApp stop:nil];
1558
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
2859 _dw_wakeup_app();
1528
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
2860 }
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
2861
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
2862 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2863 * Runs a message loop for Dynamic Windows, for a period of milliseconds.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2864 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2865 * milliseconds: Number of milliseconds to run the loop for.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2866 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2867 void API dw_main_sleep(int milliseconds)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2868 {
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2869 DWTID curr = pthread_self();
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2870
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2871 if(DWThread == (DWTID)-1 || DWThread == curr)
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2872 {
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2873 DWTID orig = DWThread;
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
2874 NSDate *until = [NSDate dateWithTimeIntervalSinceNow:(milliseconds/1000.0)];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2875
695
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
2876 if(orig == (DWTID)-1)
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
2877 {
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2878 dw_mutex_lock(DWRunMutex);
695
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
2879 DWThread = curr;
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
2880 }
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
2881 /* Process any pending events */
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
2882 while(_dw_main_iteration(until))
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2883 {
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
2884 /* Just loop */
695
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
2885 }
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
2886 if(orig == (DWTID)-1)
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
2887 {
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
2888 DWThread = orig;
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2889 dw_mutex_unlock(DWRunMutex);
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2890 }
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2891 }
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2892 else
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
2893 {
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2894 usleep(milliseconds * 1000);
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
2895 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2896 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2897
700
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
2898 /* Internal version that doesn't lock the run mutex */
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
2899 int _dw_main_iteration(NSDate *date)
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
2900 {
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2901 NSEvent *event = [DWApp nextEventMatchingMask:NSAnyEventMask
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
2902 untilDate:date
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2903 inMode:NSDefaultRunLoopMode
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2904 dequeue:YES];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2905 if(event)
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2906 {
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2907 [DWApp sendEvent:event];
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
2908 [DWApp updateWindows];
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
2909 return 1;
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
2910 }
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
2911 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2912 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2913
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2914 /*
700
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
2915 * Processes a single message iteration and returns.
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
2916 */
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
2917 void API dw_main_iteration(void)
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
2918 {
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2919 DWTID curr = pthread_self();
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2920
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2921 if(DWThread == (DWTID)-1)
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2922 {
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2923 dw_mutex_lock(DWRunMutex);
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2924 DWThread = curr;
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2925 _dw_main_iteration([NSDate distantPast]);
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2926 DWThread = (DWTID)-1;
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2927 dw_mutex_unlock(DWRunMutex);
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2928 }
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2929 else if(DWThread == curr)
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2930 {
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2931 _dw_main_iteration([NSDate distantPast]);
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
2932 }
700
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
2933 }
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
2934
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
2935 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2936 * Cleanly terminates a DW session, should be signal handler safe.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2937 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2938 * exitcode: Exit code reported to the operating system.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2939 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2940 void API dw_exit(int exitcode)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2941 {
1559
bc3a11fe9a46 Don't use _dw_pool_drain() in dw_exit() on Mac... that drains and recreates the pool.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1558
diff changeset
2942 #if !defined(GARBAGE_COLLECT)
bc3a11fe9a46 Don't use _dw_pool_drain() in dw_exit() on Mac... that drains and recreates the pool.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1558
diff changeset
2943 pool = pthread_getspecific(_dw_pool_key);
bc3a11fe9a46 Don't use _dw_pool_drain() in dw_exit() on Mac... that drains and recreates the pool.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1558
diff changeset
2944 [pool drain];
bc3a11fe9a46 Don't use _dw_pool_drain() in dw_exit() on Mac... that drains and recreates the pool.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1558
diff changeset
2945 #endif
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2946 exit(exitcode);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2947 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2948
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2949 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2950 * Free's memory allocated by dynamic windows.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2951 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2952 * ptr: Pointer to dynamic windows allocated
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2953 * memory to be free()'d.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2954 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2955 void API dw_free(void *ptr)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2956 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2957 free(ptr);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2958 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2959
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2960 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2961 * Returns a pointer to a static buffer which containes the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2962 * current user directory. Or the root directory (C:\ on
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2963 * OS/2 and Windows).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2964 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2965 char *dw_user_dir(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2966 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
2967 static char _user_dir[PATH_MAX+1] = { 0 };
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2968
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2969 if(!_user_dir[0])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2970 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2971 char *home = getenv("HOME");
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2972
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2973 if(home)
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
2974 strncpy(_user_dir, home, PATH_MAX);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2975 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2976 strcpy(_user_dir, "/");
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2977 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2978 return _user_dir;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2979 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2980
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2981 /*
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
2982 * Returns a pointer to a static buffer which containes the
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
2983 * private application data directory.
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
2984 */
1384
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1383
diff changeset
2985 char * API dw_app_dir(void)
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
2986 {
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
2987 return _dw_bundle_path;
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
2988 }
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
2989
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
2990 /*
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
2991 * 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: 1303
diff changeset
2992 * Parameters:
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
2993 * 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: 1303
diff changeset
2994 * ...: 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: 1303
diff changeset
2995 */
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
2996 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: 1303
diff changeset
2997 {
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
2998 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: 1303
diff changeset
2999 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: 1303
diff changeset
3000
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3001 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: 1303
diff changeset
3002 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: 1303
diff changeset
3003 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: 1303
diff changeset
3004
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3005 NSLog(@"%s", outbuf);
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3006 }
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3007
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3008 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3009 * Displays a Message Box with given text and title..
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3010 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3011 * title: The title of the message box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3012 * flags: flags to indicate buttons and icon
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3013 * format: printf style format string.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3014 * ...: Additional variables for use in the format.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3015 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3016 int API dw_messagebox(char *title, int flags, char *format, ...)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3017 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3018 int iResponse;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3019 NSString *button1 = @"OK";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3020 NSString *button2 = nil;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3021 NSString *button3 = nil;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3022 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: 1303
diff changeset
3023 char outbuf[1025] = {0};
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3024
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3025 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: 1303
diff changeset
3026 vsnprintf(outbuf, 1024, format, args);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3027 va_end(args);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3028
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3029 if(flags & DW_MB_OKCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3030 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3031 button2 = @"Cancel";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3032 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3033 else if(flags & DW_MB_YESNO)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3034 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3035 button1 = @"Yes";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3036 button2 = @"No";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3037 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3038 else if(flags & DW_MB_YESNOCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3039 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3040 button1 = @"Yes";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3041 button2 = @"No";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3042 button3 = @"Cancel";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3043 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3044
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3045 if(flags & DW_MB_ERROR)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3046 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3047 iResponse = (int)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3048 NSRunCriticalAlertPanel([ NSString stringWithUTF8String:title ],
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3049 [ NSString stringWithUTF8String:outbuf ],
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3050 button1, button2, button3);
936
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3051 }
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3052 else if(flags & DW_MB_INFORMATION)
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3053 {
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3054 iResponse = (int)
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3055 NSRunInformationalAlertPanel([ NSString stringWithUTF8String:title ],
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3056 [ NSString stringWithUTF8String:outbuf ],
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3057 button1, button2, button3);
936
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3058 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3059 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3060 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3061 iResponse = (int)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3062 NSRunAlertPanel([ NSString stringWithUTF8String:title ],
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3063 [ NSString stringWithUTF8String:outbuf ],
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3064 button1, button2, button3);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3065 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3066
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3067 switch(iResponse)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3068 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3069 case NSAlertDefaultReturn: /* user pressed OK */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3070 if(flags & DW_MB_YESNO || flags & DW_MB_YESNOCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3071 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3072 return DW_MB_RETURN_YES;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3073 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3074 return DW_MB_RETURN_OK;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3075 case NSAlertAlternateReturn: /* user pressed Cancel */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3076 if(flags & DW_MB_OKCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3077 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3078 return DW_MB_RETURN_CANCEL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3079 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3080 return DW_MB_RETURN_NO;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3081 case NSAlertOtherReturn: /* user pressed the third button */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3082 return DW_MB_RETURN_CANCEL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3083 case NSAlertErrorReturn: /* an error occurred */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3084 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3085 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3086 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3087 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3088
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3089 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3090 * Opens a file dialog and queries user selection.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3091 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3092 * title: Title bar text for dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3093 * defpath: The default path of the open dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3094 * ext: Default file extention.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3095 * flags: DW_FILE_OPEN or DW_FILE_SAVE.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3096 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3097 * NULL on error. A malloced buffer containing
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3098 * the file path on success.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3099 *
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3100 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3101 char * API dw_file_browse(char *title, char *defpath, char *ext, int flags)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3102 {
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3103 char temp[PATH_MAX+1];
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3104 char *file = NULL, *path = NULL;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3105
1301
7527fb644bc0 Only use default directory and filename options for Mac 10.6 and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1298
diff changeset
3106 /* Figure out path information...
7527fb644bc0 Only use default directory and filename options for Mac 10.6 and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1298
diff changeset
3107 * These functions are only support in Snow Leopard and later...
7527fb644bc0 Only use default directory and filename options for Mac 10.6 and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1298
diff changeset
3108 */
7527fb644bc0 Only use default directory and filename options for Mac 10.6 and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1298
diff changeset
3109 if(defpath && DWOSMinor > 5)
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3110 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3111 struct stat buf;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3112
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3113 /* Get an absolute path */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3114 if(!realpath(defpath, temp))
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3115 strcpy(temp, defpath);
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3116
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3117 /* Check if the defpath exists */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3118 if(stat(temp, &buf) == 0)
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3119 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3120 /* Can be a directory or file */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3121 if(buf.st_mode & S_IFDIR)
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3122 path = temp;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3123 else
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3124 file = temp;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3125 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3126 /* If it wasn't a directory... check if there is a path */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3127 if(!path && strchr(temp, '/'))
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3128 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3129 unsigned long x = strlen(temp) - 1;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3130
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3131 /* Trim off the filename */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3132 while(x > 0 && temp[x] != '/')
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3133 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3134 x--;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3135 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3136 if(temp[x] == '/')
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3137 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3138 temp[x] = 0;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3139 /* Check to make sure the trimmed piece is a directory */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3140 if(stat(temp, &buf) == 0)
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3141 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3142 if(buf.st_mode & S_IFDIR)
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3143 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3144 /* We now have it split */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3145 path = temp;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3146 file = &temp[x+1];
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3147 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3148 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3149 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3150 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3151 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3152
825
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3153 if(flags == DW_FILE_OPEN || flags == DW_DIRECTORY_OPEN)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3154 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3155 /* Create the File Open Dialog class. */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3156 NSOpenPanel* openDlg = [NSOpenPanel openPanel];
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3157
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3158 if(path)
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3159 [openDlg setDirectoryURL:[NSURL fileURLWithPath:[NSString stringWithUTF8String:path]]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3160
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3161 /* Enable the selection of files in the dialog. */
825
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3162 if(flags == DW_FILE_OPEN)
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3163 {
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3164 [openDlg setCanChooseFiles:YES];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3165 [openDlg setCanChooseDirectories:NO];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3166 }
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3167 else
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3168 {
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3169 [openDlg setCanChooseFiles:NO];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3170 [openDlg setCanChooseDirectories:YES];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3171 }
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3172
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3173 /* Handle file types */
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3174 if(ext)
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3175 {
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
3176 NSArray* fileTypes = [[[NSArray alloc] initWithObjects:[NSString stringWithUTF8String:ext], nil] autorelease];
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3177 [openDlg setAllowedFileTypes:fileTypes];
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3178 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3179
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3180 /* Disable multiple selection */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3181 [openDlg setAllowsMultipleSelection:NO];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3182
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3183 /* Display the dialog. If the OK button was pressed,
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3184 * process the files.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3185 */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3186 if([openDlg runModal] == NSOKButton)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3187 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3188 /* Get an array containing the full filenames of all
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3189 * files and directories selected.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3190 */
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3191 NSArray *files = [openDlg URLs];
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3192 NSString *fileName = [[files objectAtIndex:0] path];
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3193 if(fileName)
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3194 return strdup([ fileName UTF8String ]);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3195 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3196 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3197 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3198 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3199 /* Create the File Save Dialog class. */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3200 NSSavePanel* saveDlg = [NSSavePanel savePanel];
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3201
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3202 if(path)
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3203 [saveDlg setDirectoryURL:[NSURL fileURLWithPath:[NSString stringWithUTF8String:path]]];
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3204 if(file)
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3205 [saveDlg setNameFieldStringValue:[NSString stringWithUTF8String:file]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3206
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3207 /* Enable the creation of directories in the dialog. */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3208 [saveDlg setCanCreateDirectories:YES];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3209
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3210 /* Handle file types */
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3211 if(ext)
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3212 {
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
3213 NSArray* fileTypes = [[[NSArray alloc] initWithObjects:[NSString stringWithUTF8String:ext], nil] autorelease];
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3214 [saveDlg setAllowedFileTypes:fileTypes];
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3215 }
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3216
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3217 /* Display the dialog. If the OK button was pressed,
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3218 * process the files.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3219 */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3220 if([saveDlg runModal] == NSFileHandlingPanelOKButton)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3221 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3222 /* Get an array containing the full filenames of all
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3223 * files and directories selected.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3224 */
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3225 NSString* fileName = [[saveDlg URL] path];
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3226 if(fileName)
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
3227 return strdup([ fileName UTF8String ]);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3228 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3229 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3230
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3231 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3232 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3233
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3234 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3235 * Gets the contents of the default clipboard as text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3236 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3237 * None.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3238 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3239 * Pointer to an allocated string of text or NULL if clipboard empty or contents could not
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3240 * be converted to text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3241 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3242 char *dw_clipboard_get_text()
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3243 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3244 NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3245 NSString *str = [pasteboard stringForType:NSStringPboardType];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3246 if(str != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3247 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3248 return strdup([ str UTF8String ]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3249 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3250 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3251 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3252
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3253 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3254 * Sets the contents of the default clipboard to the supplied text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3255 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3256 * Text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3257 */
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
3258 void dw_clipboard_set_text( char *str, int len)
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
3259 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3260 NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3261
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3262 /* Only in Snow Leopard */
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3263 if(DWOSMinor > 5)
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3264 {
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3265 [pasteboard clearContents];
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3266 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3267
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3268 [pasteboard setString:[ NSString stringWithUTF8String:str ] forType:NSStringPboardType];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3269 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3270
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3271
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3272 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3273 * Allocates and initializes a dialog struct.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3274 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3275 * data: User defined data to be passed to functions.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3276 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3277 DWDialog * API dw_dialog_new(void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3278 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3279 DWDialog *tmp = malloc(sizeof(DWDialog));
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3280
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3281 if(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3282 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3283 tmp->eve = dw_event_new();
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3284 dw_event_reset(tmp->eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3285 tmp->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3286 tmp->done = FALSE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3287 tmp->result = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3288 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3289 return tmp;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3290 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3291
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3292 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3293 * Accepts a dialog struct and returns the given data to the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3294 * initial called of dw_dialog_wait().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3295 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3296 * dialog: Pointer to a dialog struct aquired by dw_dialog_new).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3297 * result: Data to be returned by dw_dialog_wait().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3298 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3299 int API dw_dialog_dismiss(DWDialog *dialog, void *result)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3300 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3301 dialog->result = result;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3302 dw_event_post(dialog->eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3303 dialog->done = TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3304 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3305 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3306
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3307 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3308 * Accepts a dialog struct waits for dw_dialog_dismiss() to be
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3309 * called by a signal handler with the given dialog struct.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3310 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3311 * dialog: Pointer to a dialog struct aquired by dw_dialog_new).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3312 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3313 void * API dw_dialog_wait(DWDialog *dialog)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3314 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3315 void *tmp;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3316
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3317 while(!dialog->done)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3318 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3319 _dw_main_iteration([NSDate dateWithTimeIntervalSinceNow:0.01]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3320 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3321 dw_event_close(&dialog->eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3322 tmp = dialog->result;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3323 free(dialog);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3324 return tmp;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3325 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3326
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3327 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3328 * Create a new Box to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3329 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3330 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3331 * pad: Number of pixels to pad around the box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3332 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3333 HWND API dw_box_new(int type, int pad)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3334 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
3335 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
3336 DW_MUTEX_LOCK;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3337 DWBox *view = [[DWBox alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3338 Box *newbox = [view box];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3339 memset(newbox, 0, sizeof(Box));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3340 newbox->pad = pad;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3341 newbox->type = type;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
3342 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3343 return view;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3344 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3345
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3346 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3347 * Create a new Group Box to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3348 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3349 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3350 * pad: Number of pixels to pad around the box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3351 * title: Text to be displayined in the group outline.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3352 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3353 HWND API dw_groupbox_new(int type, int pad, char *title)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3354 {
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
3355 NSBox *groupbox = [[DWGroupBox alloc] init];
796
3a3fae1f31bd Initial groupbox padding calculation fix. This may still need more work... very simple version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 795
diff changeset
3356 DWBox *thisbox = dw_box_new(type, pad);
3a3fae1f31bd Initial groupbox padding calculation fix. This may still need more work... very simple version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 795
diff changeset
3357 Box *box = [thisbox box];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3358
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
3359 [groupbox setBorderType:NSBezelBorder];
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
3360 [groupbox setTitle:[NSString stringWithUTF8String:title]];
806
16964b141964 More accurate groupbox paddig calculations. Title rectangle is now calculated on the fly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 805
diff changeset
3361 box->grouphwnd = groupbox;
796
3a3fae1f31bd Initial groupbox padding calculation fix. This may still need more work... very simple version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 795
diff changeset
3362 [groupbox setContentView:thisbox];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
3363 [thisbox autorelease];
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
3364 return groupbox;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3365 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3366
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3367 /*
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3368 * Create a new scrollable Box to be packed.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3369 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3370 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3371 * pad: Number of pixels to pad around the box.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3372 */
796
3a3fae1f31bd Initial groupbox padding calculation fix. This may still need more work... very simple version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 795
diff changeset
3373 HWND API dw_scrollbox_new( int type, int pad )
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3374 {
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3375 DWScrollBox *scrollbox = [[DWScrollBox alloc] init];
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3376 DWBox *box = dw_box_new(type, pad);
840
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
3377 DWBox *tmpbox = dw_box_new(DW_VERT, 0);
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
3378 dw_box_pack_start(tmpbox, box, 1, 1, TRUE, TRUE, 0);
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3379 [scrollbox setHasVerticalScroller:YES];
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3380 [scrollbox setHasHorizontalScroller:YES];
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3381 [scrollbox setBorderType:NSNoBorder];
838
8e0405435d0a Minor scrollbox fixes...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 837
diff changeset
3382 [scrollbox setDrawsBackground:NO];
840
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
3383 [scrollbox setBox:box];
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
3384 [scrollbox setDocumentView:tmpbox];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
3385 [tmpbox autorelease];
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3386 return scrollbox;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3387 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3388
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3389 /*
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3390 * Returns the position of the scrollbar in the scrollbox
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3391 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3392 * handle: Handle to the scrollbox to be queried.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3393 * orient: The vertical or horizontal scrollbar.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3394 */
796
3a3fae1f31bd Initial groupbox padding calculation fix. This may still need more work... very simple version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 795
diff changeset
3395 int API dw_scrollbox_get_pos(HWND handle, int orient)
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3396 {
844
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3397 DWScrollBox *scrollbox = handle;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3398 NSView *view = [scrollbox documentView];
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3399 NSSize contentsize = [scrollbox contentSize];
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3400 NSScroller *scrollbar;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3401 int range = 0;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3402 int val = 0;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3403 if(orient == DW_VERT)
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3404 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3405 scrollbar = [scrollbox verticalScroller];
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3406 range = [view bounds].size.height - contentsize.height;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3407 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3408 else
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3409 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3410 scrollbar = [scrollbox horizontalScroller];
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3411 range = [view bounds].size.width - contentsize.width;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3412 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3413 if(range > 0)
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3414 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3415 val = [scrollbar floatValue] * range;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3416 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3417 return val;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3418 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3419
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3420 /*
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3421 * Gets the range for the scrollbar in the scrollbox.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3422 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3423 * handle: Handle to the scrollbox to be queried.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3424 * orient: The vertical or horizontal scrollbar.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3425 */
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3426 int API dw_scrollbox_get_range(HWND handle, int orient)
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3427 {
844
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3428 DWScrollBox *scrollbox = handle;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3429 NSView *view = [scrollbox documentView];
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3430 int range = 0;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3431 if(orient == DW_VERT)
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3432 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3433 range = [view bounds].size.height;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3434 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3435 else
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3436 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3437 range = [view bounds].size.width;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3438 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3439 return range;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3440 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3441
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3442 /* Internal function to calculate the widget's required size..
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3443 * These are the general rules for widget sizes:
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3444 *
1537
a4ecef1980db Added code for returning a size for scrolled widgets on OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1533
diff changeset
3445 * Render/Unspecified: 1x1
1556
4a9c574d5c17 Fixed on Windows showing themed static text on colored boxes when the window is glass.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1553
diff changeset
3446 * Scrolled(Container,Tree,MLE): Guessed size clamped to min and max in dw.h
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3447 * Entryfield/Combobox/Spinbutton: 150x(maxfontheight)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3448 * Spinbutton: 50x(maxfontheight)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3449 * Text/Status: (textwidth)x(textheight)
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
3450 * Ranged: 100x14 or 14x100 for vertical.
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
3451 * Buttons/Bitmaps: Size of text or image and border.
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
3452 */
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3453 void _control_size(id handle, int *width, int *height)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3454 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3455 int thiswidth = 1, thisheight = 1, extrawidth = 0, extraheight = 0;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3456 NSString *nsstr = nil;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3457 id object = handle;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3458
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3459 if([object isMemberOfClass:[ DWSpinButton class]])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3460 object = [object textfield];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3461 /* Handle all the different button types */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3462 if([ object isKindOfClass:[ NSButton class ] ])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3463 {
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3464 switch([object buttonType])
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3465 {
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3466 case NSSwitchButton:
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3467 case NSRadioButton:
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3468 extrawidth = 24;
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3469 extraheight = 4;
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3470 nsstr = [object title];
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3471 break;
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3472 default:
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3473 {
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3474 NSImage *image = [object image];
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3475
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3476 if(image)
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3477 {
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3478 /* Image button */
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3479 NSSize size = [image size];
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3480 thiswidth = (int)size.width;
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3481 thisheight = (int)size.height;
1432
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3482 if([object isBordered])
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3483 {
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3484 extrawidth = 4;
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3485 extraheight = 4;
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3486 }
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3487 }
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3488 else
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3489 {
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3490 /* Text button */
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3491 nsstr = [object title];
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3492
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3493 if([object isBordered])
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3494 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3495 extrawidth = 30;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3496 extraheight = 8;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3497 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3498 else
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3499 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3500 extrawidth = 8;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3501 extraheight = 4;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3502 }
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3503 }
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3504 break;
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3505 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3506 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3507 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3508 /* If the control is an entryfield set width to 150 */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3509 else if([object isKindOfClass:[ NSTextField class ]] && [object isEditable])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3510 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3511 NSFont *font = [object font];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3512 /* Spinbuttons don't need to be as wide */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3513 if([object isMemberOfClass:[ DWSpinButton class]])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3514 thiswidth = 50;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3515 else
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3516 thiswidth = 150;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3517 if(font)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3518 thisheight = (int)[font boundingRectForFont].size.height;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3519 /* Spinbuttons don't need to be as wide */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3520 if([object isMemberOfClass:[ DWComboBox class]])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3521 extraheight = 4;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3522 }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3523 /* Handle the ranged widgets */
1457
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
3524 else if([ object isMemberOfClass:[DWPercent class] ] ||
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3525 [ object isMemberOfClass:[DWSlider class] ])
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3526 {
1457
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
3527 thiswidth = 100;
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
3528 thisheight = 20;
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
3529 }
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
3530 /* Handle the ranged widgets */
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
3531 else if([ object isMemberOfClass:[DWScrollbar class] ])
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
3532 {
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
3533 if([object vertical])
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3534 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3535 thiswidth = 14;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3536 thisheight = 100;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3537 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3538 else
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3539 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3540 thiswidth = 100;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3541 thisheight = 14;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3542 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3543 }
1421
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3544 /* Handle bitmap size */
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3545 else if([ object isMemberOfClass:[NSImageView class] ])
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3546 {
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3547 NSImage *image = [object image];
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3548
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3549 if(image)
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3550 {
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3551 NSSize size = [image size];
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3552 thiswidth = (int)size.width;
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3553 thisheight = (int)size.height;
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3554 }
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3555 }
1533
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3556 /* Handle calendar */
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3557 else if([ object isMemberOfClass:[DWCalendar class] ])
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3558 {
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3559 NSCell *cell = [object cell];
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3560
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3561 if(cell)
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3562 {
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3563 NSSize size = [cell cellSize];
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3564
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3565 thiswidth = size.width;
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3566 thisheight = size.height;
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3567 }
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3568 }
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3569 /* MLE and Container */
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3570 else if([ object isMemberOfClass:[DWMLE class] ] ||
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3571 [ object isMemberOfClass:[DWContainer class] ])
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3572 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3573 NSSize size;
1549
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3574
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3575 if([ object isMemberOfClass:[DWMLE class] ])
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3576 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3577 NSScrollView *sv = [object scrollview];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3578 NSSize frame = [sv frame].size;
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3579 BOOL hscroll = [sv hasHorizontalScroller];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3580
1552
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
3581 /* Make sure word wrap is off for the first part */
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3582 if(!hscroll)
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3583 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3584 [[object textContainer] setWidthTracksTextView:NO];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3585 [[object textContainer] setContainerSize:[object maxSize]];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3586 [object setHorizontallyResizable:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3587 [sv setHasHorizontalScroller:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3588 }
1552
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
3589 /* Size the text view to fit */
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3590 [object sizeToFit];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3591 size = [object bounds].size;
1552
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
3592 size.width += 2.0;
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
3593 size.height += 2.0;
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
3594 /* Re-enable word wrapping if it was on */
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3595 if(!hscroll)
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3596 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3597 [[object textContainer] setWidthTracksTextView:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3598 [sv setHasHorizontalScroller:NO];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3599
1553
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3600 /* If the un wrapped it is beyond the bounds... */
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3601 if(size.width > _DW_SCROLLED_MAX_WIDTH)
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3602 {
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3603 NSSize max = [object maxSize];
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3604
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3605 /* Set the max size to the limit */
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3606 [object setMaxSize:NSMakeSize(_DW_SCROLLED_MAX_WIDTH, max.height)];
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3607 /* Recalculate the size */
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3608 [object sizeToFit];
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3609 size = [object bounds].size;
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3610 size.width += 2.0;
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3611 size.height += 2.0;
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3612 [object setMaxSize:max];
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3613 }
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3614 }
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3615 [sv setFrameSize:frame];
1552
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
3616 /* Take into account the horizontal scrollbar */
1553
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
3617 if(hscroll && size.width > _DW_SCROLLED_MAX_WIDTH)
1552
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
3618 size.height += 16.0;
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3619 }
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3620 else
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3621 size = [object frame].size;
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3622
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3623 thiswidth = size.width;
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3624 thisheight = size.height;
1549
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3625
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3626 if(thiswidth < _DW_SCROLLED_MIN_WIDTH)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3627 thiswidth = _DW_SCROLLED_MIN_WIDTH;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3628 if(thiswidth > _DW_SCROLLED_MAX_WIDTH)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3629 thiswidth = _DW_SCROLLED_MAX_WIDTH;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3630 if(thisheight < _DW_SCROLLED_MIN_HEIGHT)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3631 thisheight = _DW_SCROLLED_MIN_HEIGHT;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3632 if(thisheight > _DW_SCROLLED_MAX_HEIGHT)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3633 thisheight = _DW_SCROLLED_MAX_HEIGHT;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3634 }
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3635 /* Tree */
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3636 else if([ object isMemberOfClass:[DWTree class] ])
1537
a4ecef1980db Added code for returning a size for scrolled widgets on OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1533
diff changeset
3637 {
1566
035bc006afbe Experimental change... halfway between min and max for tree controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1564
diff changeset
3638 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: 1564
diff changeset
3639 thisheight = (int)((_DW_SCROLLED_MAX_HEIGHT + _DW_SCROLLED_MIN_HEIGHT)/2);
1537
a4ecef1980db Added code for returning a size for scrolled widgets on OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1533
diff changeset
3640 }
1533
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3641 /* Any other control type */
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3642 else if([ object isKindOfClass:[ NSControl class ] ])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3643 nsstr = [object stringValue];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3644
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
3645 /* If we have a string...
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
3646 * calculate the size with the current font.
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
3647 */
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
3648 if(nsstr && [nsstr length])
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
3649 dw_font_text_extents_get(object, NULL, (char *)[nsstr UTF8String], &thiswidth, &thisheight);
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
3650
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
3651 /* Handle static text fields */
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3652 if([object isKindOfClass:[ NSTextField class ]] && ![object isEditable])
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
3653 {
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
3654 /* Handle status bar field */
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
3655 if([object isBordered] || (DWOSMinor > 5 && [object isBezeled]))
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
3656 {
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
3657 extrawidth = 12;
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
3658 extraheight = 4;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
3659 }
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
3660 else
1457
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
3661 extrawidth = 10;
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
3662 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3663
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3664 /* Set the requested sizes */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3665 if(width)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3666 *width = thiswidth + extrawidth;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3667 if(height)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3668 *height = thisheight + extraheight;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3669 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3670
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3671 /* Internal box packing function called by the other 3 functions */
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3672 void _dw_box_pack(HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad, char *funcname)
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3673 {
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3674 int _locked_by_me = FALSE;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3675 DW_MUTEX_LOCK;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3676 id object = box;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3677 DWBox *view = box;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3678 DWBox *this = item;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3679 Box *thisbox;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3680 int z, x = 0;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3681 Item *tmpitem, *thisitem;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3682
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3683 /*
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3684 * If you try and pack an item into itself VERY bad things can happen; like at least an
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3685 * infinite loop on GTK! Lets be safe!
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3686 */
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3687 if(box == item)
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3688 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3689 dw_messagebox(funcname, DW_MB_OK|DW_MB_ERROR, "Danger! Danger! Will Robinson; box and item are the same!");
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3690 return;
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3691 }
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
3692
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3693 /* Query the objects */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3694 if([ object isKindOfClass:[ NSWindow class ] ])
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3695 {
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3696 NSWindow *window = box;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3697 view = [window contentView];
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3698 }
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3699 else if([ object isMemberOfClass:[ DWScrollBox class ] ])
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3700 {
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3701 DWScrollBox *scrollbox = box;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3702 view = [scrollbox box];
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3703 }
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3704
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3705 thisbox = [view box];
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3706 thisitem = thisbox->items;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3707 object = item;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3708
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3709 /* Query the objects */
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
3710 if([ object isMemberOfClass:[ DWContainer class ] ] ||
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
3711 [ object isMemberOfClass:[ DWTree class ] ] ||
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
3712 [ object isMemberOfClass:[ DWMLE class ] ])
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
3713 {
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
3714 this = item = [object scrollview];
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3715 }
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3716
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3717 /* Do some sanity bounds checking */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3718 if(index < 0)
1079
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
3719 index = 0;
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3720 if(index > thisbox->count)
1079
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
3721 index = thisbox->count;
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
3722
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3723 /* Duplicate the existing data */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3724 tmpitem = malloc(sizeof(Item)*(thisbox->count+1));
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3725
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3726 for(z=0;z<thisbox->count;z++)
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3727 {
1079
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
3728 if(z == index)
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
3729 x++;
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
3730 tmpitem[x] = thisitem[z];
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
3731 x++;
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3732 }
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3733
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3734 /* Sanity checks */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3735 if(vsize && !height)
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3736 height = 1;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3737 if(hsize && !width)
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3738 width = 1;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3739
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3740 /* Fill in the item data appropriately */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3741 if([object isKindOfClass:[DWBox class]] || [object isMemberOfClass:[DWGroupBox class]])
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3742 tmpitem[index].type = TYPEBOX;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3743 else
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3744 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3745 if ( width == 0 && hsize == FALSE )
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3746 dw_messagebox(funcname, DW_MB_OK|DW_MB_ERROR, "Width and expand Horizonal both unset for box: %x item: %x",box,item);
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3747 if ( height == 0 && vsize == FALSE )
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3748 dw_messagebox(funcname, DW_MB_OK|DW_MB_ERROR, "Height and expand Vertical both unset for box: %x item: %x",box,item);
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
3749
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3750 tmpitem[index].type = TYPEITEM;
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3751 }
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3752
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3753 tmpitem[index].hwnd = item;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3754 tmpitem[index].origwidth = tmpitem[index].width = width;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3755 tmpitem[index].origheight = tmpitem[index].height = height;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3756 tmpitem[index].pad = pad;
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3757 tmpitem[index].hsize = hsize ? SIZEEXPAND : SIZESTATIC;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3758 tmpitem[index].vsize = vsize ? SIZEEXPAND : SIZESTATIC;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3759
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3760 /* If either of the parameters are -1 ... calculate the size */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3761 if(width == -1 || height == -1)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3762 _control_size(object, width == -1 ? &tmpitem[index].width : NULL, height == -1 ? &tmpitem[index].height : NULL);
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3763
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3764 thisbox->items = tmpitem;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3765
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3766 /* Update the item count */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3767 thisbox->count++;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3768
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3769 /* Add the item to the box */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3770 [view addSubview:this];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
3771 /* Enable autorelease on the item...
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
3772 * so it will get destroyed when the parent is.
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
3773 */
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
3774 [this autorelease];
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3775 /* If we are packing a button... */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3776 if([this isMemberOfClass:[DWButton class]])
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3777 {
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3778 DWButton *button = (DWButton *)this;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3779
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3780 /* Save the parent box so radio
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3781 * buttons can use it later.
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3782 */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3783 [button setParent:view];
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3784 }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3785 /* Queue a redraw on the top-level window */
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
3786 _dw_redraw([object window], TRUE);
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3787
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3788 /* Free the old data */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3789 if(thisbox->count)
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3790 free(thisitem);
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3791 DW_MUTEX_UNLOCK;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3792 }
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3793
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
3794 /*
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3795 * Pack windows (widgets) into a box at an arbitrary location.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3796 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3797 * box: Window handle of the box to be packed into.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3798 * item: Window handle of the item to be back.
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
3799 * index: 0 based index of packed items.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3800 * width: Width in pixels of the item or -1 to be self determined.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3801 * height: Height in pixels of the item or -1 to be self determined.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3802 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3803 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3804 * pad: Number of pixels of padding around the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3805 */
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3806 void API dw_box_pack_at_index(HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad)
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3807 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3808 _dw_box_pack(box, item, index, width, height, hsize, vsize, pad, "dw_box_pack_at_index()");
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3809 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3810
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3811 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3812 * Pack windows (widgets) into a box from the start (or top).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3813 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3814 * box: Window handle of the box to be packed into.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3815 * item: Window handle of the item to be back.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3816 * width: Width in pixels of the item or -1 to be self determined.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3817 * height: Height in pixels of the item or -1 to be self determined.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3818 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3819 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3820 * pad: Number of pixels of padding around the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3821 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3822 void API dw_box_pack_start(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3823 {
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
3824 /* 65536 is the table limit on GTK...
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3825 * seems like a high enough value we will never hit it here either.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3826 */
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3827 _dw_box_pack(box, item, 65536, width, height, hsize, vsize, pad, "dw_box_pack_start()");
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3828 }
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3829
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3830 /*
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3831 * Pack windows (widgets) into a box from the end (or bottom).
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3832 * Parameters:
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3833 * box: Window handle of the box to be packed into.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3834 * item: Window handle of the item to be back.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3835 * width: Width in pixels of the item or -1 to be self determined.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3836 * height: Height in pixels of the item or -1 to be self determined.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3837 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3838 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3839 * pad: Number of pixels of padding around the item.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3840 */
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3841 void API dw_box_pack_end(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad)
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3842 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
3843 _dw_box_pack(box, item, 0, width, height, hsize, vsize, pad, "dw_box_pack_end()");
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3844 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3845
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
3846 HWND _button_new(char *text, ULONG cid)
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
3847 {
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3848 DWButton *button = [[DWButton alloc] init];
983
6abf763838c6 Allow checboxes and other "buttons" to have a blank title instead of the default "Button"
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 982
diff changeset
3849 if(text)
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3850 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3851 [button setTitle:[ NSString stringWithUTF8String:text ]];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3852 }
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3853 [button setTarget:button];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3854 [button setAction:@selector(buttonClicked:)];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3855 [button setTag:cid];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3856 [button setButtonType:NSMomentaryPushInButton];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3857 [button setBezelStyle:NSThickerSquareBezelStyle];
1093
25707e9f5ad1 Reverted the image scaling on buttons on Mac so it remains consistent on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1086
diff changeset
3858 /* TODO: Reenable scaling in the future if it is possible on other platforms.
25707e9f5ad1 Reverted the image scaling on buttons on Mac so it remains consistent on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1086
diff changeset
3859 [[button cell] setImageScaling:NSImageScaleProportionallyDown]; */
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3860 if(DWDefaultFont)
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3861 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3862 [[button cell] setFont:DWDefaultFont];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
3863 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
3864 return button;
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
3865 }
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
3866
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3867 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3868 * Create a new button window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3869 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3870 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3871 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3872 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
3873 HWND API dw_button_new(char *text, ULONG cid)
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
3874 {
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
3875 DWButton *button = _button_new(text, cid);
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
3876 [button setButtonType:NSMomentaryPushInButton];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
3877 [button setBezelStyle:NSRoundedBezelStyle];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
3878 [button setImagePosition:NSNoImage];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
3879 [button setAlignment:NSCenterTextAlignment];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
3880 [[button cell] setControlTint:NSBlueControlTint];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3881 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3882 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3883
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3884 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3885 * Create a new Entryfield window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3886 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3887 * text: The default text to be in the entryfield widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3888 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3889 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
3890 HWND API dw_entryfield_new(char *text, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3891 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3892 DWEntryField *entry = [[DWEntryField alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3893 [entry setStringValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3894 [entry setTag:cid];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3895 return entry;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3896 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3897
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3898 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3899 * Create a new Entryfield (password) window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3900 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3901 * text: The default text to be in the entryfield widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3902 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3903 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
3904 HWND API dw_entryfield_password_new(char *text, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3905 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3906 DWEntryFieldPassword *entry = [[DWEntryFieldPassword alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3907 [entry setStringValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3908 [entry setTag:cid];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3909 return entry;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3910 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3911
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3912 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3913 * Sets the entryfield character limit.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3914 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3915 * handle: Handle to the spinbutton to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3916 * limit: Number of characters the entryfield will take.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3917 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3918 void API dw_entryfield_set_limit(HWND handle, ULONG limit)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3919 {
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
3920 DWEntryField *entry = handle;
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
3921 DWEntryFieldFormatter *formatter = [[[DWEntryFieldFormatter alloc] init] autorelease];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3922
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
3923 [formatter setMaximumLength:(int)limit];
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
3924 [[entry cell] setFormatter:formatter];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3925 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3926
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3927 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3928 * Create a new bitmap button window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3929 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3930 * text: Bubble help text to be displayed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3931 * id: An ID of a bitmap in the resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3932 */
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
3933 HWND API dw_bitmapbutton_new(char *text, ULONG resid)
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
3934 {
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
3935 NSBundle *bundle = [NSBundle mainBundle];
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
3936 NSString *respath = [bundle resourcePath];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3937 NSString *filepath = [respath stringByAppendingFormat:@"/%u.png", resid];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
3938 NSImage *image = [[NSImage alloc] initWithContentsOfFile:filepath];
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
3939 DWButton *button = _button_new("", resid);
748
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3940 if(image)
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3941 {
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3942 [button setImage:image];
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3943 }
1396
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
3944 if(text)
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
3945 [button setToolTip:[NSString stringWithUTF8String:text]];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
3946 [image release];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
3947 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3948 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3949
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3950 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3951 * Create a new bitmap button window (widget) to be packed from a file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3952 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3953 * text: Bubble help text to be displayed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3954 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3955 * filename: Name of the file, omit extention to have
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3956 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3957 * (BMP on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3958 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
3959 HWND API dw_bitmapbutton_new_from_file(char *text, unsigned long cid, char *filename)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3960 {
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3961 char *ext = _dw_get_image_extension( filename );
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3962
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
3963 NSString *nstr = [ NSString stringWithUTF8String:filename ];
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
3964 NSImage *image = [[NSImage alloc] initWithContentsOfFile:nstr];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3965
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3966 if(!image && ext)
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3967 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3968 nstr = [nstr stringByAppendingString: [NSString stringWithUTF8String:ext]];
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
3969 image = [[NSImage alloc] initWithContentsOfFile:nstr];
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
3970 }
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
3971 DWButton *button = _button_new("", cid);
748
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3972 if(image)
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3973 {
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3974 [button setImage:image];
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3975 }
1396
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
3976 if(text)
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
3977 [button setToolTip:[NSString stringWithUTF8String:text]];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
3978 [image release];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
3979 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3980 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3981
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3982 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3983 * Create a new bitmap button window (widget) to be packed from data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3984 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3985 * text: Bubble help text to be displayed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3986 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3987 * data: The contents of the image
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3988 * (BMP or ICO on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3989 * len: length of str
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3990 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
3991 HWND API dw_bitmapbutton_new_from_data(char *text, unsigned long cid, char *data, int len)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3992 {
760
2fb17622a455 Possible fix for exception in dw_bitmapbutton_new_from_data()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 755
diff changeset
3993 NSData *thisdata = [NSData dataWithBytes:data length:len];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
3994 NSImage *image = [[NSImage alloc] initWithData:thisdata];
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
3995 DWButton *button = _button_new("", cid);
748
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3996 if(image)
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3997 {
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3998 [button setImage:image];
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
3999 }
1396
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
4000 if(text)
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
4001 [button setToolTip:[NSString stringWithUTF8String:text]];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4002 [image release];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
4003 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4004 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4005
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4006 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4007 * Create a new spinbutton window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4008 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4009 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4010 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4011 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4012 HWND API dw_spinbutton_new(char *text, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4013 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4014 DWSpinButton *spinbutton = [[DWSpinButton alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4015 NSStepper *stepper = [spinbutton stepper];
1023
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
4016 NSTextField *textfield = [spinbutton textfield];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4017 [stepper setIncrement:1];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4018 [stepper setTag:cid];
1023
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
4019 [stepper setMinValue:-65536];
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
4020 [stepper setMaxValue:65536];
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
4021 [stepper setIntValue:atoi(text)];
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
4022 [textfield takeIntValueFrom:stepper];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4023 return spinbutton;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4024 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4025
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4026 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4027 * Sets the spinbutton value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4028 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4029 * handle: Handle to the spinbutton to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4030 * position: Current value of the spinbutton.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4031 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4032 void API dw_spinbutton_set_pos(HWND handle, long position)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4033 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4034 DWSpinButton *spinbutton = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4035 NSStepper *stepper = [spinbutton stepper];
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
4036 NSTextField *textfield = [spinbutton textfield];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4037 [stepper setIntValue:(int)position];
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
4038 [textfield takeIntValueFrom:stepper];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4039 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4040
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4041 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4042 * Sets the spinbutton limits.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4043 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4044 * handle: Handle to the spinbutton to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4045 * upper: Upper limit.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4046 * lower: Lower limit.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4047 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4048 void API dw_spinbutton_set_limits(HWND handle, long upper, long lower)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4049 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4050 DWSpinButton *spinbutton = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4051 NSStepper *stepper = [spinbutton stepper];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4052 [stepper setMinValue:(double)lower];
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4053 [stepper setMaxValue:(double)upper];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4054 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4055
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4056 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4057 * Returns the current value of the spinbutton.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4058 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4059 * handle: Handle to the spinbutton to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4060 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4061 long API dw_spinbutton_get_pos(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4062 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4063 DWSpinButton *spinbutton = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4064 NSStepper *stepper = [spinbutton stepper];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4065 return (long)[stepper integerValue];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4066 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4067
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4068 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4069 * Create a new radiobutton window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4070 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4071 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4072 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4073 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4074 HWND API dw_radiobutton_new(char *text, ULONG cid)
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4075 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4076 DWButton *button = _button_new(text, cid);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4077 [button setButtonType:NSRadioButton];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4078 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4079 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4080
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4081 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4082 * Create a new slider window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4083 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4084 * vertical: TRUE or FALSE if slider is vertical.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4085 * increments: Number of increments available.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4086 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4087 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4088 HWND API dw_slider_new(int vertical, int increments, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4089 {
704
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4090 DWSlider *slider = [[DWSlider alloc] init];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4091 [slider setMaxValue:(double)increments];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4092 [slider setMinValue:0];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4093 [slider setContinuous:YES];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4094 [slider setTarget:slider];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4095 [slider setAction:@selector(sliderChanged:)];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4096 [slider setTag:cid];
704
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4097 return slider;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4098 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4099
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4100 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4101 * Returns the position of the slider.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4102 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4103 * handle: Handle to the slider to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4104 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4105 unsigned int API dw_slider_get_pos(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4106 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4107 DWSlider *slider = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4108 double val = [slider doubleValue];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4109 return (int)val;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4110 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4111
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4112 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4113 * Sets the slider position.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4114 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4115 * handle: Handle to the slider to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4116 * position: Position of the slider withing the range.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4117 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4118 void API dw_slider_set_pos(HWND handle, unsigned int position)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4119 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4120 DWSlider *slider = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4121 [slider setDoubleValue:(double)position];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4122 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4123
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4124 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4125 * Create a new scrollbar window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4126 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4127 * vertical: TRUE or FALSE if scrollbar is vertical.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4128 * increments: Number of increments available.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4129 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4130 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4131 HWND API dw_scrollbar_new(int vertical, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4132 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4133 DWScrollbar *scrollbar;
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4134 if(vertical)
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4135 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4136 scrollbar = [[DWScrollbar alloc] init];
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4137 [scrollbar setVertical:YES];
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4138 }
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4139 else
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4140 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4141 scrollbar = [[DWScrollbar alloc] initWithFrame:NSMakeRect(0,0,100,5)];
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4142 }
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4143 [scrollbar setArrowsPosition:NSScrollerArrowsDefaultSetting];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4144 [scrollbar setTarget:scrollbar];
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4145 [scrollbar setAction:@selector(changed:)];
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4146 [scrollbar setRange:0.0 andVisible:0.0];
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4147 [scrollbar setKnobProportion:1.0];
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
4148 [scrollbar setTarget:scrollbar];
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
4149 [scrollbar setAction:@selector(scrollerChanged:)];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4150 [scrollbar setTag:cid];
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4151 [scrollbar setEnabled:YES];
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4152 return scrollbar;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4153 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4154
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4155 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4156 * Returns the position of the scrollbar.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4157 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4158 * handle: Handle to the scrollbar to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4159 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4160 unsigned int API dw_scrollbar_get_pos(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4161 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4162 DWScrollbar *scrollbar = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4163 float range = [scrollbar range];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4164 float fresult = [scrollbar doubleValue] * range;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4165 return (int)fresult;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4166 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4167
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4168 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4169 * Sets the scrollbar position.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4170 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4171 * handle: Handle to the scrollbar to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4172 * position: Position of the scrollbar withing the range.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4173 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4174 void API dw_scrollbar_set_pos(HWND handle, unsigned int position)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4175 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4176 DWScrollbar *scrollbar = handle;
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
4177 double range = [scrollbar range];
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
4178 double visible = [scrollbar visible];
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
4179 double newpos = (double)position/(range-visible);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4180 [scrollbar setDoubleValue:newpos];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4181 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4182
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4183 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4184 * Sets the scrollbar range.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4185 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4186 * handle: Handle to the scrollbar to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4187 * range: Maximum range value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4188 * visible: Visible area relative to the range.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4189 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4190 void API dw_scrollbar_set_range(HWND handle, unsigned int range, unsigned int visible)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4191 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4192 DWScrollbar *scrollbar = handle;
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
4193 double knob = (double)visible/(double)range;
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
4194 [scrollbar setRange:(double)range andVisible:(double)visible];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4195 [scrollbar setKnobProportion:knob];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4196 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4197
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4198 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4199 * Create a new percent bar window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4200 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4201 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4202 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4203 HWND API dw_percent_new(ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4204 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4205 DWPercent *percent = [[DWPercent alloc] init];
714
cf6246f86c04 Fixed the percent/progress indicators from always being indeterminate.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 713
diff changeset
4206 [percent setStyle:NSProgressIndicatorBarStyle];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4207 [percent setBezeled:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4208 [percent setMaxValue:100];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4209 [percent setMinValue:0];
714
cf6246f86c04 Fixed the percent/progress indicators from always being indeterminate.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 713
diff changeset
4210 [percent incrementBy:1];
cf6246f86c04 Fixed the percent/progress indicators from always being indeterminate.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 713
diff changeset
4211 [percent setIndeterminate:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4212 /*[percent setTag:cid]; Why doesn't this work? */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4213 return percent;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4214 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4215
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4216 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4217 * Sets the percent bar position.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4218 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4219 * handle: Handle to the percent bar to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4220 * position: Position of the percent bar withing the range.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4221 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4222 void API dw_percent_set_pos(HWND handle, unsigned int position)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4223 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4224 DWPercent *percent = handle;
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
4225
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
4226 /* Handle indeterminate */
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
4227 if(position == DW_PERCENT_INDETERMINATE)
1193
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
4228 {
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
4229 [percent setIndeterminate:YES];
1193
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
4230 [percent startAnimation:percent];
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
4231 }
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
4232 else
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
4233 {
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
4234 /* Handle normal */
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
4235 if([percent isIndeterminate])
1193
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
4236 {
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
4237 [percent stopAnimation:percent];
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
4238 [percent setIndeterminate:NO];
1193
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
4239 }
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
4240 [percent setDoubleValue:(double)position];
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
4241 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4242 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4243
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4244 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4245 * Create a new checkbox window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4246 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4247 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4248 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4249 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4250 HWND API dw_checkbox_new(char *text, ULONG cid)
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4251 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4252 DWButton *button = _button_new(text, cid);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4253 [button setButtonType:NSSwitchButton];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4254 [button setBezelStyle:NSRegularSquareBezelStyle];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4255 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4256 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4257
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4258 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4259 * Returns the state of the checkbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4260 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4261 * handle: Handle to the checkbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4262 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4263 int API dw_checkbox_get(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4264 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4265 DWButton *button = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4266 if([button state])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4267 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4268 return TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4269 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4270 return FALSE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4271 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4272
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4273 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4274 * Sets the state of the checkbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4275 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4276 * handle: Handle to the checkbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4277 * value: TRUE for checked, FALSE for unchecked.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4278 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4279 void API dw_checkbox_set(HWND handle, int value)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4280 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4281 DWButton *button = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4282 if(value)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4283 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4284 [button setState:NSOnState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4285 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4286 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4287 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4288 [button setState:NSOffState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4289 }
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
4290
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4291 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4292
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
4293 /* Common code for containers and listboxes */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4294 HWND _cont_new(ULONG cid, int multi)
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
4295 {
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4296 NSScrollView *scrollview = [[NSScrollView alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4297 DWContainer *cont = [[DWContainer alloc] init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4298
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
4299 [cont setScrollview:scrollview];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
4300 [scrollview setBorderType:NSBezelBorder];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
4301 [scrollview setHasVerticalScroller:YES];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
4302 [scrollview setAutohidesScrollers:YES];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4303
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4304 if(multi)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4305 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4306 [cont setAllowsMultipleSelection:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4307 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4308 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4309 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4310 [cont setAllowsMultipleSelection:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4311 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4312 [cont setDataSource:cont];
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
4313 [cont setDelegate:cont];
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
4314 [scrollview setDocumentView:cont];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4315 [cont setTag:cid];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
4316 [cont autorelease];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4317 return cont;
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
4318 }
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
4319
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4320 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4321 * Create a new listbox window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4322 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4323 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4324 * multi: Multiple select TRUE or FALSE.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4325 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4326 HWND API dw_listbox_new(ULONG cid, int multi)
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4327 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4328 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4329 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4330 DWContainer *cont = _cont_new(cid, multi);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4331 [cont setHeaderView:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4332 int type = DW_CFA_STRING;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4333 [cont setup];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
4334 NSTableColumn *column = [[[NSTableColumn alloc] init] autorelease];
795
f23cad02cfb3 Make listbox, container and tree cells uneditable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 794
diff changeset
4335 [column setEditable:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4336 [cont addTableColumn:column];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4337 [cont addColumn:column andType:type];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4338 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4339 return cont;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4340 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4341
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4342 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4343 * Appends the specified text to the listbox's (or combobox) entry list.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4344 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4345 * handle: Handle to the listbox to be appended to.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4346 * text: Text to append into listbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4347 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4348 void API dw_listbox_append(HWND handle, char *text)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4349 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4350 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4351 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4352 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4353
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4354 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4355 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4356 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4357
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4358 [combo addItemWithObjectValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4359 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4360 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4361 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4362 DWContainer *cont = handle;
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4363 NSString *nstr = [ NSString stringWithUTF8String:text ];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4364 NSArray *newrow = [NSArray arrayWithObject:nstr];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4365
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4366 [cont addRow:newrow];
688
b52f1d4a60dd Fixes for timers not working properly. Includes commented out test container code for threadsafety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 687
diff changeset
4367 /*[cont performSelectorOnMainThread:@selector(addRow:)
b52f1d4a60dd Fixes for timers not working properly. Includes commented out test container code for threadsafety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 687
diff changeset
4368 withObject:newrow
b52f1d4a60dd Fixes for timers not working properly. Includes commented out test container code for threadsafety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 687
diff changeset
4369 waitUntilDone:YES];*/
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
4370 [cont reloadData];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
4371 [cont setNeedsDisplay:YES];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4372 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4373 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4374 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4375
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4376 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4377 * Inserts the specified text into the listbox's (or combobox) entry list.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4378 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4379 * handle: Handle to the listbox to be inserted into.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4380 * text: Text to insert into listbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4381 * pos: 0-based position to insert text
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4382 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4383 void API dw_listbox_insert(HWND handle, char *text, int pos)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4384 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4385 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4386 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4387 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4388
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4389 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4390 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4391 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4392
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4393 [combo insertItemWithObjectValue:[ NSString stringWithUTF8String:text ] atIndex:pos];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4394 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4395 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4396 {
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
4397 DWContainer *cont = handle;
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
4398 NSString *nstr = [ NSString stringWithUTF8String:text ];
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
4399 NSArray *newrow = [NSArray arrayWithObject:nstr];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4400
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
4401 [cont insertRow:newrow at:pos];
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
4402 [cont reloadData];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
4403 [cont setNeedsDisplay:YES];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4404 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4405 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4406 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4407
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4408 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4409 * Appends the specified text items to the listbox's (or combobox) entry list.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4410 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4411 * handle: Handle to the listbox to be appended to.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4412 * text: Text strings to append into listbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4413 * count: Number of text strings to append
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4414 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4415 void API dw_listbox_list_append(HWND handle, char **text, int count)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4416 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4417 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4418 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4419 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4420
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4421 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4422 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4423 DWComboBox *combo = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4424 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4425
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4426 for(z=0;z<count;z++)
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4427 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4428 [combo addItemWithObjectValue:[ NSString stringWithUTF8String:text[z] ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4429 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4430 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4431 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4432 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4433 DWContainer *cont = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4434 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4435
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4436 for(z=0;z<count;z++)
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4437 {
1318
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
4438 NSString *nstr = [NSString stringWithUTF8String:text[z]];
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
4439 NSArray *newrow = [NSArray arrayWithObjects:nstr,nil];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4440
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4441 [cont addRow:newrow];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4442 }
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
4443 [cont reloadData];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
4444 [cont setNeedsDisplay:YES];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4445 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4446 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4447 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4448
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4449 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4450 * Clears the listbox's (or combobox) list of all entries.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4451 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4452 * handle: Handle to the listbox to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4453 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4454 void API dw_listbox_clear(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4455 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4456 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4457 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4458 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4459
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4460 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4461 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4462 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4463
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4464 [combo removeAllItems];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4465 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4466 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4467 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4468 DWContainer *cont = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4469
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4470 [cont clear];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
4471 [cont reloadData];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
4472 [cont setNeedsDisplay:YES];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4473 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4474 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4475 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4476
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4477 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4478 * Returns the listbox's item count.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4479 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4480 * handle: Handle to the listbox to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4481 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4482 int API dw_listbox_count(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4483 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4484 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4485
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4486 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4487 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4488 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4489
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4490 return (int)[combo numberOfItems];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4491 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4492 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4493 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4494 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4495 DW_MUTEX_LOCK;
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4496 DWContainer *cont = handle;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4497 int result = (int)[cont numberOfRowsInTableView:cont];
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4498 DW_MUTEX_UNLOCK;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4499 return result;
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4500 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4501 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4502 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4503
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4504 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4505 * Sets the topmost item in the viewport.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4506 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4507 * handle: Handle to the listbox to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4508 * top: Index to the top item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4509 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4510 void API dw_listbox_set_top(HWND handle, int top)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4511 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4512 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4513 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4514 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4515
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4516 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4517 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4518 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4519
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4520 [combo scrollItemAtIndexToTop:top];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4521 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4522 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4523 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4524 DWContainer *cont = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4525
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4526 [cont scrollRowToVisible:top];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4527 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4528 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4529 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4530
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4531 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4532 * Copies the given index item's text into buffer.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4533 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4534 * handle: Handle to the listbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4535 * index: Index into the list to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4536 * buffer: Buffer where text will be copied.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4537 * length: Length of the buffer (including NULL).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4538 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4539 void API dw_listbox_get_text(HWND handle, unsigned int index, char *buffer, unsigned int length)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4540 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4541 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4542 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4543 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4544
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4545 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4546 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4547 DWComboBox *combo = handle;
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4548 int count = (int)[combo numberOfItems];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4549
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4550 if(index > count)
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4551 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4552 *buffer = '\0';
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4553 }
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4554 else
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4555 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4556 NSString *nstr = [combo itemObjectValueAtIndex:index];
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4557 strncpy(buffer, [ nstr UTF8String ], length - 1);
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4558 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4559 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4560 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4561 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4562 DWContainer *cont = handle;
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4563 int count = (int)[cont numberOfRowsInTableView:cont];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4564
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4565 if(index > count)
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4566 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4567 *buffer = '\0';
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4568 }
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4569 else
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4570 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4571 NSString *nstr = [cont getRow:index and:0];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4572
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4573 strncpy(buffer, [ nstr UTF8String ], length - 1);
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4574 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4575 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4576 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4577 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4578
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4579 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4580 * Sets the text of a given listbox entry.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4581 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4582 * handle: Handle to the listbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4583 * index: Index into the list to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4584 * buffer: Buffer where text will be copied.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4585 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4586 void API dw_listbox_set_text(HWND handle, unsigned int index, char *buffer)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4587 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4588 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4589 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4590 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4591
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4592 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4593 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4594 DWComboBox *combo = handle;
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4595 int count = (int)[combo numberOfItems];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4596
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4597 if(index <= count)
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4598 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4599 [combo removeItemAtIndex:index];
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4600 [combo insertItemWithObjectValue:[ NSString stringWithUTF8String:buffer ] atIndex:index];
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4601 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4602 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4603 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4604 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4605 DWContainer *cont = handle;
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4606 int count = (int)[cont numberOfRowsInTableView:cont];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4607
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4608 if(index <= count)
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4609 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4610 NSString *nstr = [ NSString stringWithUTF8String:buffer ];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4611
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4612 [cont editCell:nstr at:index and:0];
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4613 [cont reloadData];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
4614 [cont setNeedsDisplay:YES];
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
4615 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4616 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4617 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4618 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4619
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4620 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4621 * Returns the index to the item in the list currently selected.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4622 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4623 * handle: Handle to the listbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4624 */
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: 983
diff changeset
4625 int API dw_listbox_selected(HWND handle)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4626 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4627 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4628
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4629 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4630 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4631 DWComboBox *combo = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4632 return (int)[combo indexOfSelectedItem];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4633 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4634 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4635 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4636 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4637 DW_MUTEX_LOCK;
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4638 DWContainer *cont = handle;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4639 int result = (int)[cont selectedRow];
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4640 DW_MUTEX_UNLOCK;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4641 return result;
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4642 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4643 return -1;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4644 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4645
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4646 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4647 * Returns the index to the current selected item or -1 when done.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4648 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4649 * handle: Handle to the listbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4650 * where: Either the previous return or -1 to restart.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4651 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4652 int API dw_listbox_selected_multi(HWND handle, int where)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4653 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4654 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4655 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4656 id object = handle;
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4657 int retval = -1;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4658
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4659 if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4660 {
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
4661 NSUInteger result;
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4662 DWContainer *cont = handle;
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4663 NSIndexSet *selected = [cont selectedRowIndexes];
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
4664 if( where == -1 )
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
4665 result = [selected indexGreaterThanOrEqualToIndex:0];
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
4666 else
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
4667 result = [selected indexGreaterThanIndex:where];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4668
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4669 if(result != NSNotFound)
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4670 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4671 retval = (int)result;
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4672 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4673 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4674 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4675 return retval;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4676 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4677
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4678 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4679 * Sets the selection state of a given index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4680 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4681 * handle: Handle to the listbox to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4682 * index: Item index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4683 * state: TRUE if selected FALSE if unselected.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4684 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4685 void API dw_listbox_select(HWND handle, int index, int state)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4686 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4687 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4688 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4689 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4690
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4691 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4692 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4693 DWComboBox *combo = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4694 if(state)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4695 [combo selectItemAtIndex:index];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4696 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4697 [combo deselectItemAtIndex:index];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4698 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4699 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4700 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4701 DWContainer *cont = handle;
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4702 NSIndexSet *selected = [[NSIndexSet alloc] initWithIndex:(NSUInteger)index];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4703
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4704 [cont selectRowIndexes:selected byExtendingSelection:YES];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4705 [selected release];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4706 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4707 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4708 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4709
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4710 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4711 * Deletes the item with given index from the list.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4712 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4713 * handle: Handle to the listbox to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4714 * index: Item index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4715 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4716 void API dw_listbox_delete(HWND handle, int index)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4717 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4718 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4719 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4720 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4721
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4722 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4723 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4724 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4725
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4726 [combo removeItemAtIndex:index];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4727 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4728 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4729 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4730 DWContainer *cont = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4731
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4732 [cont removeRow:index];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
4733 [cont reloadData];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
4734 [cont setNeedsDisplay:YES];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4735 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
4736 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4737 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4738
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4739 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4740 * Create a new Combobox window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4741 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4742 * text: The default text to be in the combpbox widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4743 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4744 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4745 HWND API dw_combobox_new(char *text, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4746 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4747 DWComboBox *combo = [[DWComboBox alloc] init];
804
5b4a831af8fa Fix for dw_combobox_new() not setting the default text in the entryfield.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 803
diff changeset
4748 [combo setStringValue:[NSString stringWithUTF8String:text]];
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
4749 [combo setDelegate:combo];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4750 [combo setTag:cid];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4751 return combo;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4752 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4753
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4754 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4755 * Create a new Multiline Editbox window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4756 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4757 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4758 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4759 HWND API dw_mle_new(ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4760 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4761 DWMLE *mle = [[DWMLE alloc] init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4762 NSScrollView *scrollview = [[NSScrollView alloc] init];
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4763 NSSize size = [mle maxSize];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4764
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4765 size.width = size.height;
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4766 [mle setMaxSize:size];
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
4767 [scrollview setBorderType:NSBezelBorder];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
4768 [scrollview setHasVerticalScroller:YES];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
4769 [scrollview setAutohidesScrollers:YES];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
4770 [scrollview setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
4771 [scrollview setDocumentView:mle];
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4772 [mle setVerticallyResizable:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4773 [mle setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4774 [mle setScrollview:scrollview];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4775 /* [mle setTag:cid]; Why doesn't this work? */
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
4776 [mle autorelease];
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4777 return mle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4778 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4779
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4780 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4781 * Adds text to an MLE box and returns the current point.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4782 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4783 * handle: Handle to the MLE to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4784 * buffer: Text buffer to be imported.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4785 * startpoint: Point to start entering text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4786 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4787 unsigned int API dw_mle_import(HWND handle, char *buffer, int startpoint)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4788 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4789 DWMLE *mle = handle;
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4790 int _locked_by_me = FALSE;
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4791 DW_MUTEX_LOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4792 NSTextStorage *ts = [mle textStorage];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4793 NSString *nstr = [NSString stringWithUTF8String:buffer];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4794 NSMutableString *ms = [ts mutableString];
992
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4795 NSUInteger length = [ms length];
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4796 if(startpoint < 0)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4797 startpoint = 0;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4798 if(startpoint > length)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4799 startpoint = (int)length;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4800 [ms insertString:nstr atIndex:startpoint];
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4801 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4802 return (unsigned int)strlen(buffer) + startpoint;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4803 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4804
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4805 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4806 * Grabs text from an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4807 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4808 * handle: Handle to the MLE to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4809 * buffer: Text buffer to be exported.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4810 * startpoint: Point to start grabbing text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4811 * length: Amount of text to be grabbed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4812 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4813 void API dw_mle_export(HWND handle, char *buffer, int startpoint, int length)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4814 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4815 DWMLE *mle = handle;
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4816 int _locked_by_me = FALSE;
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4817 DW_MUTEX_LOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4818 NSTextStorage *ts = [mle textStorage];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4819 NSMutableString *ms = [ts mutableString];
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
4820 const char *tmp = [ms UTF8String];
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
4821 strncpy(buffer, tmp+startpoint, length);
1129
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
4822 buffer[length] = '\0';
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4823 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4824 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4825
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4826 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4827 * Obtains information about an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4828 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4829 * handle: Handle to the MLE to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4830 * bytes: A pointer to a variable to return the total bytes.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4831 * lines: A pointer to a variable to return the number of lines.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4832 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4833 void API dw_mle_get_size(HWND handle, unsigned long *bytes, unsigned long *lines)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4834 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4835 DWMLE *mle = handle;
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4836 int _locked_by_me = FALSE;
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4837 DW_MUTEX_LOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4838 NSTextStorage *ts = [mle textStorage];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4839 NSMutableString *ms = [ts mutableString];
807
f7016a38bedd Fix for dw_window_set_text() on buttons not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 806
diff changeset
4840 NSUInteger numberOfLines, index, stringLength = [ms length];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
4841
992
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4842 if(bytes)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4843 *bytes = stringLength;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4844 if(lines)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4845 {
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4846 for(index=0, numberOfLines=0; index < stringLength; numberOfLines++)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4847 index = NSMaxRange([ms lineRangeForRange:NSMakeRange(index, 0)]);
1041
6a57bf20d8f9 Return displayName property instead of fontName property in dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1040
diff changeset
4848
992
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4849 *lines = numberOfLines;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4850 }
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4851 DW_MUTEX_LOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4852 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4853
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4854 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4855 * Deletes text from an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4856 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4857 * handle: Handle to the MLE to be deleted from.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4858 * startpoint: Point to start deleting text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4859 * length: Amount of text to be deleted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4860 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4861 void API dw_mle_delete(HWND handle, int startpoint, int length)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4862 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4863 DWMLE *mle = handle;
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4864 int _locked_by_me = FALSE;
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4865 DW_MUTEX_LOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4866 NSTextStorage *ts = [mle textStorage];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4867 NSMutableString *ms = [ts mutableString];
992
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4868 NSUInteger mslength = [ms length];
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4869 if(startpoint < 0)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4870 startpoint = 0;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4871 if(startpoint > mslength)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4872 startpoint = (int)mslength;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4873 if(startpoint + length > mslength)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4874 length = (int)mslength - startpoint;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
4875 [ms deleteCharactersInRange:NSMakeRange(startpoint, length)];
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4876 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4877 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4878
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4879 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4880 * Clears all text from an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4881 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4882 * handle: Handle to the MLE to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4883 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4884 void API dw_mle_clear(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4885 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4886 DWMLE *mle = handle;
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4887 int _locked_by_me = FALSE;
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4888 DW_MUTEX_LOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4889 NSTextStorage *ts = [mle textStorage];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4890 NSMutableString *ms = [ts mutableString];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4891 NSUInteger length = [ms length];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4892 [ms deleteCharactersInRange:NSMakeRange(0, length)];
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4893 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4894 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4895
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4896 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4897 * Sets the visible line of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4898 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4899 * handle: Handle to the MLE to be positioned.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4900 * line: Line to be visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4901 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4902 void API dw_mle_set_visible(HWND handle, int line)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4903 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4904 DWMLE *mle = handle;
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4905 int _locked_by_me = FALSE;
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4906 DW_MUTEX_LOCK;
802
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
4907 NSTextStorage *ts = [mle textStorage];
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
4908 NSMutableString *ms = [ts mutableString];
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
4909 NSUInteger numberOfLines, index, stringLength = [ms length];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
4910
802
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
4911 for(index=0, numberOfLines=0; index < stringLength && numberOfLines < line; numberOfLines++)
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
4912 index = NSMaxRange([ms lineRangeForRange:NSMakeRange(index, 0)]);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
4913
802
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
4914 if(line == numberOfLines)
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
4915 {
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
4916 [mle scrollRangeToVisible:[ms lineRangeForRange:NSMakeRange(index, 0)]];
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
4917 }
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4918 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4919 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4920
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4921 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4922 * Sets the editablity of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4923 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4924 * handle: Handle to the MLE.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4925 * state: TRUE if it can be edited, FALSE for readonly.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4926 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4927 void API dw_mle_set_editable(HWND handle, int state)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4928 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4929 DWMLE *mle = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4930 if(state)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4931 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4932 [mle setEditable:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4933 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4934 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4935 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4936 [mle setEditable:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4937 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4938 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4939
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4940 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4941 * Sets the word wrap state of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4942 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4943 * handle: Handle to the MLE.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4944 * state: TRUE if it wraps, FALSE if it doesn't.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4945 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4946 void API dw_mle_set_word_wrap(HWND handle, int state)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4947 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4948 DWMLE *mle = handle;
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4949 NSScrollView *sv = [mle scrollview];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4950
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4951 if(state)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4952 {
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4953 [[mle textContainer] setWidthTracksTextView:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4954 [sv setHasHorizontalScroller:NO];
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4955 }
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4956 else
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4957 {
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4958 [[mle textContainer] setWidthTracksTextView:NO];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4959 [[mle textContainer] setContainerSize:[mle maxSize]];
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4960 [mle setHorizontallyResizable:YES];
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4961 [sv setHasHorizontalScroller:YES];
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
4962 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4963 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4964
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4965 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4966 * Sets the current cursor position of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4967 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4968 * handle: Handle to the MLE to be positioned.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4969 * point: Point to position cursor.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4970 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4971 void API dw_mle_set_cursor(HWND handle, int point)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4972 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4973 DWMLE *mle = handle;
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4974 int _locked_by_me = FALSE;
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4975 DW_MUTEX_LOCK;
989
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
4976 NSTextStorage *ts = [mle textStorage];
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
4977 NSMutableString *ms = [ts mutableString];
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
4978 NSUInteger length = [ms length];
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
4979 if(point < 0)
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
4980 point = 0;
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
4981 if(point > length)
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
4982 point = (int)length;
712
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
4983 [mle setSelectedRange: NSMakeRange(point,point)];
1201
196cd8a8e6a8 Fixed dw_mle_set_cursor() should scroll to the point on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1193
diff changeset
4984 [mle scrollRangeToVisible:NSMakeRange(point,point)];
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4985 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4986 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4987
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4988 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4989 * Finds text in an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4990 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4991 * handle: Handle to the MLE to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4992 * text: Text to search for.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4993 * point: Start point of search.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4994 * flags: Search specific flags.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4995 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4996 int API dw_mle_search(HWND handle, char *text, int point, unsigned long flags)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4997 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4998 DWMLE *mle = handle;
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
4999 int _locked_by_me = FALSE;
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
5000 DW_MUTEX_LOCK;
888
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5001 NSTextStorage *ts = [mle textStorage];
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5002 NSMutableString *ms = [ts mutableString];
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5003 NSString *searchForMe = [NSString stringWithUTF8String:text];
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5004 NSRange searchRange = NSMakeRange(point, [ms length] - point);
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5005 NSRange range = NSMakeRange(NSNotFound, 0);
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5006 NSUInteger options = flags ? flags : NSCaseInsensitiveSearch;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5007
888
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5008 if(ms)
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5009 {
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5010 range = [ms rangeOfString:searchForMe options:options range:searchRange];
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5011 }
1204
5cb7e52f76c7 Put Mac MLE under mutex protection because of crashes when accessing the MLE from threads.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1202
diff changeset
5012 DW_MUTEX_UNLOCK;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5013 if(range.location != NSNotFound)
888
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5014 {
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5015 return -1;
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5016 }
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5017 return (int)range.location;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5018 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5019
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5020 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5021 * Stops redrawing of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5022 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5023 * handle: Handle to the MLE to freeze.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5024 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5025 void API dw_mle_freeze(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5026 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5027 /* Don't think this is necessary */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5028 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5029
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5030 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5031 * Resumes redrawing of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5032 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5033 * handle: Handle to the MLE to thaw.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5034 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5035 void API dw_mle_thaw(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5036 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5037 /* Don't think this is necessary */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5038 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5039
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5040 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5041 * Create a new status text window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5042 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5043 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5044 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5045 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5046 HWND API dw_status_text_new(char *text, ULONG cid)
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5047 {
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
5048 NSTextField *textfield = dw_text_new(text, cid);
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
5049 [textfield setBordered:YES];
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
5050 if(DWOSMinor > 5)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5051 {
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
5052 [textfield setBezeled:YES];
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
5053 [textfield setBezelStyle:NSTextFieldSquareBezel];
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
5054 }
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
5055 [textfield setBackgroundColor:[NSColor clearColor]];
673
6d0f0dc7ff7c Some minor font fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 672
diff changeset
5056 [textfield setDrawsBackground:NO];
931
dfd84cefd80b Minor changes to vertical centering on (status) text fields on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 930
diff changeset
5057 [[textfield cell] setVCenter:YES];
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
5058 return textfield;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5059 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5060
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5061 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5062 * Create a new static text window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5063 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5064 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5065 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5066 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5067 HWND API dw_text_new(char *text, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5068 {
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
5069 DWText *textfield = [[DWText alloc] init];
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5070 [textfield setEditable:NO];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5071 [textfield setSelectable:NO];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5072 [textfield setBordered:NO];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5073 [textfield setDrawsBackground:NO];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5074 [textfield setStringValue:[ NSString stringWithUTF8String:text ]];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5075 [textfield setTag:cid];
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5076 if(DWDefaultFont)
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5077 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5078 [[textfield cell] setFont:DWDefaultFont];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5079 }
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5080 return textfield;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5081 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5082
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5083 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5084 * Creates a rendering context widget (window) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5085 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5086 * id: An id to be used with dw_window_from_id.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5087 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5088 * A handle to the widget or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5089 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5090 HWND API dw_render_new(unsigned long cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5091 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5092 DWRender *render = [[DWRender alloc] init];
922
07f9a73c6847 Fix for button press/release events coordinates being relative to the window instead of the screen on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 921
diff changeset
5093 [render setTag:cid];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5094 return render;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5095 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5096
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5097 /* Sets the current foreground drawing color.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5098 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5099 * red: red value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5100 * green: green value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5101 * blue: blue value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5102 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5103 void API dw_color_foreground_set(unsigned long value)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5104 {
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5105 NSColor *oldcolor = pthread_getspecific(_dw_fg_color_key);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5106 NSColor *newcolor;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5107
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5108 _foreground = _get_color(value);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5109
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5110 newcolor = [[NSColor colorWithDeviceRed: DW_RED_VALUE(_foreground)/255.0 green:
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5111 DW_GREEN_VALUE(_foreground)/255.0 blue:
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5112 DW_BLUE_VALUE(_foreground)/255.0 alpha: 1] retain];
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5113 pthread_setspecific(_dw_fg_color_key, newcolor);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5114 [oldcolor release];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5115 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5116
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5117 /* Sets the current background drawing color.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5118 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5119 * red: red value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5120 * green: green value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5121 * blue: blue value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5122 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5123 void API dw_color_background_set(unsigned long value)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5124 {
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5125 NSColor *oldcolor = pthread_getspecific(_dw_bg_color_key);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5126 NSColor *newcolor;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5127
891
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5128 if(value == DW_CLR_DEFAULT)
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5129 {
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5130 pthread_setspecific(_dw_bg_color_key, NULL);
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5131 }
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5132 else
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5133 {
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5134 _background = _get_color(value);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5135
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5136 newcolor = [[NSColor colorWithDeviceRed: DW_RED_VALUE(_background)/255.0 green:
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5137 DW_GREEN_VALUE(_background)/255.0 blue:
891
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5138 DW_BLUE_VALUE(_background)/255.0 alpha: 1] retain];
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5139 pthread_setspecific(_dw_bg_color_key, newcolor);
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5140 }
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5141 [oldcolor release];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5142 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5143
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5144 /* Allows the user to choose a color using the system's color chooser dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5145 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5146 * value: current color
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5147 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5148 * The selected color or the current color if cancelled.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5149 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5150 unsigned long API dw_color_choose(unsigned long value)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5151 {
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5152 NSColor *color = [[NSColor colorWithDeviceRed: DW_RED_VALUE(value)/255.0 green: DW_GREEN_VALUE(value)/255.0 blue: DW_BLUE_VALUE(value)/255.0 alpha: 1] retain];
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5153 /* Create the Color Chooser Dialog class. */
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5154 static DWColorChoose *colorDlg = nil;
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5155 DWDialog *dialog;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5156
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5157 if(colorDlg)
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5158 {
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5159 dialog = [colorDlg dialog];
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5160 /* If someone is already waiting just return */
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5161 if(dialog)
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5162 {
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5163 return value;
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5164 }
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5165 }
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5166 else
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5167 {
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5168 colorDlg = (DWColorChoose *)[DWColorChoose sharedColorPanel];
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5169 /* Set defaults for the dialog. */
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5170 [colorDlg setContinuous:NO];
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5171 [colorDlg setTarget:colorDlg];
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5172 [colorDlg setAction:@selector(changeColor:)];
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5173 }
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5174
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5175 dialog = dw_dialog_new(colorDlg);
690
b93f5cdab37d Fixes to the color picker... it actually shows the picker now but it still needs more work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 689
diff changeset
5176 [colorDlg setColor:color];
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5177 [colorDlg setDialog:dialog];
690
b93f5cdab37d Fixes to the color picker... it actually shows the picker now but it still needs more work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 689
diff changeset
5178 [colorDlg makeKeyAndOrderFront:nil];
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5179
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5180 /* Wait for them to pick a color */
690
b93f5cdab37d Fixes to the color picker... it actually shows the picker now but it still needs more work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 689
diff changeset
5181 color = (NSColor *)dw_dialog_wait(dialog);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5182
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5183 /* Figure out the value of what they returned */
734
668a88a0b930 Fixed a minor 64/32 bit issue and fixed my having blue and red values reversed in the color table.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 733
diff changeset
5184 CGFloat red, green, blue;
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5185 [color getRed:&red green:&green blue:&blue alpha:NULL];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
5186 [color release];
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5187 value = DW_RGB((int)(red * 255), (int)(green *255), (int)(blue *255));
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5188 return value;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5189 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5190
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5191 /* Draw a point on a window (preferably a render window).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5192 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5193 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5194 * pixmap: Handle to the pixmap. (choose only one of these)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5195 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5196 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5197 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5198 void API dw_draw_point(HWND handle, HPIXMAP pixmap, int x, int y)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5199 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5200 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5201 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5202 id image = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5203 if(pixmap)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5204 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5205 image = (id)pixmap->image;
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5206 [NSGraphicsContext saveGraphicsState];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5207 [NSGraphicsContext setCurrentContext:[NSGraphicsContext
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5208 graphicsContextWithGraphicsPort:[[NSGraphicsContext graphicsContextWithBitmapImageRep:image] graphicsPort] flipped:YES]];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5209 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5210 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5211 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5212 if([image lockFocusIfCanDraw] == NO)
747
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5213 {
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5214 DW_MUTEX_UNLOCK;
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5215 return;
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5216 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5217 _DWLastDrawable = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5218 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5219 NSBezierPath* aPath = [NSBezierPath bezierPath];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5220 [aPath setLineWidth: 0.5];
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5221 NSColor *color = pthread_getspecific(_dw_fg_color_key);
665
e6bec2290f3f Fixing warnings with Xcode 4 and switched to manual releasing in the draw functions to stop leaking.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 664
diff changeset
5222 [color set];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5223
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5224 [aPath moveToPoint:NSMakePoint(x, y)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5225 [aPath stroke];
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5226 if(pixmap)
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5227 {
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5228 [NSGraphicsContext restoreGraphicsState];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5229 }
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5230 else
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5231 {
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5232 [image unlockFocus];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5233 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5234 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5235 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5236
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5237 /* Draw a line on a window (preferably a render window).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5238 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5239 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5240 * pixmap: Handle to the pixmap. (choose only one of these)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5241 * x1: First X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5242 * y1: First Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5243 * x2: Second X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5244 * y2: Second Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5245 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5246 void API dw_draw_line(HWND handle, HPIXMAP pixmap, int x1, int y1, int x2, int y2)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5247 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5248 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5249 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5250 id image = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5251 if(pixmap)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5252 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5253 image = (id)pixmap->image;
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5254 [NSGraphicsContext saveGraphicsState];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5255 [NSGraphicsContext setCurrentContext:[NSGraphicsContext
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5256 graphicsContextWithGraphicsPort:[[NSGraphicsContext graphicsContextWithBitmapImageRep:image] graphicsPort] flipped:YES]];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5257 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5258 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5259 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5260 if([image lockFocusIfCanDraw] == NO)
747
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5261 {
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5262 DW_MUTEX_UNLOCK;
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5263 return;
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5264 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5265 _DWLastDrawable = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5266 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5267 NSBezierPath* aPath = [NSBezierPath bezierPath];
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5268 NSColor *color = pthread_getspecific(_dw_fg_color_key);
665
e6bec2290f3f Fixing warnings with Xcode 4 and switched to manual releasing in the draw functions to stop leaking.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 664
diff changeset
5269 [color set];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5270
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5271 [aPath moveToPoint:NSMakePoint(x1 + 0.5, y1 + 0.5)];
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5272 [aPath lineToPoint:NSMakePoint(x2 + 0.5, y2 + 0.5)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5273 [aPath stroke];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5274
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5275 if(pixmap)
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5276 {
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5277 [NSGraphicsContext restoreGraphicsState];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5278 }
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5279 else
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5280 {
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5281 [image unlockFocus];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5282 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5283 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5284 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5285
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5286 /* Draw text on a window (preferably a render window).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5287 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5288 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5289 * pixmap: Handle to the pixmap. (choose only one of these)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5290 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5291 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5292 * text: Text to be displayed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5293 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5294 void API dw_draw_text(HWND handle, HPIXMAP pixmap, int x, int y, char *text)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5295 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5296 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5297 DW_MUTEX_LOCK;
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5298 id image = handle;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5299 NSString *nstr = [ NSString stringWithUTF8String:text ];
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5300 if(image)
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5301 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5302 if([image isMemberOfClass:[DWRender class]])
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5303 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5304 DWRender *render = handle;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5305 NSFont *font = [render font];
747
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5306 if([image lockFocusIfCanDraw] == NO)
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5307 {
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5308 DW_MUTEX_UNLOCK;
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5309 return;
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5310 }
891
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5311 NSColor *fgcolor = pthread_getspecific(_dw_fg_color_key);
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5312 NSColor *bgcolor = pthread_getspecific(_dw_bg_color_key);
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5313 NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:fgcolor, NSForegroundColorAttributeName, nil];
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5314 if(bgcolor)
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5315 {
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5316 [dict setValue:bgcolor forKey:NSBackgroundColorAttributeName];
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5317 }
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5318 if(font)
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5319 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5320 [dict setValue:font forKey:NSFontAttributeName];
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5321 }
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5322 [nstr drawAtPoint:NSMakePoint(x, y) withAttributes:dict];
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5323 [image unlockFocus];
827
dc094750d284 Fixed leak in dw_draw_text() not releasing the dictionary which was also pulling the NSColor along.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 826
diff changeset
5324 [dict release];
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5325 }
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5326 _DWLastDrawable = handle;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5327 }
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5328 if(pixmap)
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5329 {
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
5330 NSFont *font = pixmap->font;
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5331 DWRender *render = pixmap->handle;
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
5332 if(!font && [render isMemberOfClass:[DWRender class]])
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5333 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5334 font = [render font];
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5335 }
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5336 image = (id)pixmap->image;
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5337 [NSGraphicsContext saveGraphicsState];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5338 [NSGraphicsContext setCurrentContext:[NSGraphicsContext
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5339 graphicsContextWithGraphicsPort:[[NSGraphicsContext graphicsContextWithBitmapImageRep:image] graphicsPort] flipped:YES]];
891
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5340 NSColor *fgcolor = pthread_getspecific(_dw_fg_color_key);
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5341 NSColor *bgcolor = pthread_getspecific(_dw_bg_color_key);
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5342 NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:fgcolor, NSForegroundColorAttributeName, nil];
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5343 if(bgcolor)
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5344 {
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5345 [dict setValue:bgcolor forKey:NSBackgroundColorAttributeName];
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5346 }
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5347 if(font)
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5348 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5349 [dict setValue:font forKey:NSFontAttributeName];
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5350 }
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5351 [nstr drawAtPoint:NSMakePoint(x, y) withAttributes:dict];
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5352 [NSGraphicsContext restoreGraphicsState];
827
dc094750d284 Fixed leak in dw_draw_text() not releasing the dictionary which was also pulling the NSColor along.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 826
diff changeset
5353 [dict release];
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5354 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5355 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5356 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5357
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5358 /* Query the width and height of a text string.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5359 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5360 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5361 * pixmap: Handle to the pixmap. (choose only one of these)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5362 * text: Text to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5363 * width: Pointer to a variable to be filled in with the width.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5364 * height Pointer to a variable to be filled in with the height.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5365 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5366 void API dw_font_text_extents_get(HWND handle, HPIXMAP pixmap, char *text, int *width, int *height)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5367 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5368 id object = handle;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5369 NSString *nstr = [NSString stringWithUTF8String:text];
1230
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5370 NSFont *font = nil;
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5371 /* Check the pixmap for associated object or font */
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5372 if(pixmap)
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5373 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5374 object = pixmap->handle;
1230
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5375 font = pixmap->font;
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5376 }
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5377 NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
1230
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5378 /* If we didn't get a font from the pixmap... try the associated object */
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5379 if(!font && ([object isMemberOfClass:[DWRender class]] || [object isKindOfClass:[NSControl class]]))
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5380 {
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5381 font = [object font];
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5382 }
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5383 /* If we got a font... add it to the dictionary */
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5384 if(font)
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5385 {
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5386 [dict setValue:font forKey:NSFontAttributeName];
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5387 }
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5388 /* Calculate the size of the string */
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5389 NSSize size = [nstr sizeWithAttributes:dict];
665
e6bec2290f3f Fixing warnings with Xcode 4 and switched to manual releasing in the draw functions to stop leaking.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 664
diff changeset
5390 [dict release];
1230
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
5391 /* Return whatever information we can */
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5392 if(width)
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5393 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5394 *width = size.width;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5395 }
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5396 if(height)
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5397 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5398 *height = size.height;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
5399 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5400 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5401
1523
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5402 /* Internal function to create an image graphics context...
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5403 * with or without antialiasing enabled.
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5404 */
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5405 id _create_gc(id image, bool antialiased)
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5406 {
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5407 CGContextRef context = (CGContextRef)[[NSGraphicsContext graphicsContextWithBitmapImageRep:image] graphicsPort];
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5408 NSGraphicsContext *gc = [NSGraphicsContext graphicsContextWithGraphicsPort:context flipped:YES];
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5409 [gc setShouldAntialias:antialiased];
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5410 CGContextSetAllowsAntialiasing(context, antialiased);
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5411 return gc;
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5412 }
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5413
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5414 /* Draw a polygon on a window (preferably a render window).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5415 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5416 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5417 * 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: 1269
diff changeset
5418 * flags: DW_DRAW_FILL (1) to fill the polygon or DW_DRAW_DEFAULT (0).
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5419 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5420 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5421 * width: Width of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5422 * height: Height of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5423 */
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: 1269
diff changeset
5424 void API dw_draw_polygon( HWND handle, HPIXMAP pixmap, int flags, int npoints, int *x, int *y )
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5425 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5426 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5427 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5428 id image = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5429 int z;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5430 if(pixmap)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5431 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5432 image = (id)pixmap->image;
1523
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5433 id gc = _create_gc(image, flags & DW_DRAW_NOAA ? NO : YES);
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5434 [NSGraphicsContext saveGraphicsState];
1523
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5435 [NSGraphicsContext setCurrentContext:gc];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5436 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5437 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5438 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5439 if([image lockFocusIfCanDraw] == NO)
747
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5440 {
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5441 DW_MUTEX_UNLOCK;
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5442 return;
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5443 }
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5444 [[NSGraphicsContext currentContext] setShouldAntialias:(flags & DW_DRAW_NOAA ? NO : YES)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5445 _DWLastDrawable = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5446 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5447 NSBezierPath* aPath = [NSBezierPath bezierPath];
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5448 NSColor *color = pthread_getspecific(_dw_fg_color_key);
665
e6bec2290f3f Fixing warnings with Xcode 4 and switched to manual releasing in the draw functions to stop leaking.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 664
diff changeset
5449 [color set];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5450
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5451 [aPath moveToPoint:NSMakePoint(*x + 0.5, *y + 0.5)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5452 for(z=1;z<npoints;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5453 {
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5454 [aPath lineToPoint:NSMakePoint(x[z] + 0.5, y[z] + 0.5)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5455 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5456 [aPath closePath];
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: 1269
diff changeset
5457 if(flags & DW_DRAW_FILL)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5458 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5459 [aPath fill];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5460 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5461 [aPath stroke];
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5462 if(pixmap)
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5463 {
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5464 [NSGraphicsContext restoreGraphicsState];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5465 }
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5466 else
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5467 {
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5468 [image unlockFocus];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5469 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5470 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5471 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5472
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5473 /* Draw a rectangle on a window (preferably a render window).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5474 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5475 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5476 * 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: 1269
diff changeset
5477 * flags: DW_DRAW_FILL (1) to fill the box or DW_DRAW_DEFAULT (0).
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5478 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5479 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5480 * width: Width of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5481 * height: Height of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5482 */
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: 1269
diff changeset
5483 void API dw_draw_rect(HWND handle, HPIXMAP pixmap, int flags, int x, int y, int width, int height)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5484 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5485 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5486 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5487 id image = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5488 if(pixmap)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5489 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5490 image = (id)pixmap->image;
1523
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5491 id gc = _create_gc(image, flags & DW_DRAW_NOAA ? NO : YES);
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5492 [NSGraphicsContext saveGraphicsState];
1523
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5493 [NSGraphicsContext setCurrentContext:gc];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5494 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5495 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5496 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5497 if([image lockFocusIfCanDraw] == NO)
747
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5498 {
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5499 DW_MUTEX_UNLOCK;
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5500 return;
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5501 }
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5502 [[NSGraphicsContext currentContext] setShouldAntialias:(flags & DW_DRAW_NOAA ? NO : YES)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5503 _DWLastDrawable = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5504 }
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
5505 NSColor *color = pthread_getspecific(_dw_fg_color_key);
665
e6bec2290f3f Fixing warnings with Xcode 4 and switched to manual releasing in the draw functions to stop leaking.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 664
diff changeset
5506 [color set];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5507
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: 1269
diff changeset
5508 if(flags & DW_DRAW_FILL)
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5509 [NSBezierPath fillRect:NSMakeRect(x, y, width, height)];
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5510 else
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5511 [NSBezierPath strokeRect:NSMakeRect(x, y, width, height)];
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5512 if(pixmap)
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5513 {
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5514 [NSGraphicsContext restoreGraphicsState];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5515 }
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5516 else
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5517 {
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5518 [image unlockFocus];
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
5519 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5520 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5521 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5522
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5523 /* 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: 1247
diff changeset
5524 * Parameters:
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5525 * handle: Handle to the window.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5526 * 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: 1269
diff changeset
5527 * 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: 1269
diff changeset
5528 * 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: 1247
diff changeset
5529 * 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: 1247
diff changeset
5530 * 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: 1247
diff changeset
5531 * 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: 1247
diff changeset
5532 * 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: 1247
diff changeset
5533 * 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: 1247
diff changeset
5534 * 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: 1247
diff changeset
5535 */
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5536 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: 1247
diff changeset
5537 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5538 int _locked_by_me = FALSE;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5539 DW_MUTEX_LOCK;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5540 id image = handle;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5541 double r, a1, a2, a;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5542
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5543 if(pixmap)
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5544 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5545 image = (id)pixmap->image;
1523
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5546 id gc = _create_gc(image, flags & DW_DRAW_NOAA ? NO : YES);
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5547 [NSGraphicsContext saveGraphicsState];
1523
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
5548 [NSGraphicsContext setCurrentContext:gc];
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5549 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5550 else
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5551 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5552 if([image lockFocusIfCanDraw] == NO)
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5553 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5554 DW_MUTEX_UNLOCK;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5555 return;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5556 }
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5557 [[NSGraphicsContext currentContext] setShouldAntialias:(flags & DW_DRAW_NOAA ? NO : YES)];
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5558 _DWLastDrawable = handle;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5559 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5560 NSBezierPath* aPath = [NSBezierPath bezierPath];
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5561 NSColor *color = pthread_getspecific(_dw_fg_color_key);
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5562 [color set];
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5563
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: 1269
diff changeset
5564 /* Special case of a full circle/oval */
1269
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5565 if(flags & DW_DRAW_FULL)
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5566 {
1279
ee9a233f1b42 Fixed DW_DRAW_FULL for arcs on Mac. Rectangle was being created incorrectly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1277
diff changeset
5567 [aPath appendBezierPathWithOvalInRect:NSMakeRect(x1, y1, x2 - x1, y2 - y1)];
1269
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5568 }
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5569 else
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5570 {
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5571 [aPath moveToPoint:NSMakePoint(x1, y1)];
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5572 /* Calculate the midpoint */
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5573 r = 0.5 * (hypot((double)(y1 - yorigin), (double)(x1 - xorigin)) +
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5574 hypot((double)(y2 - yorigin), (double)(x2 - xorigin)));
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5575 a1 = atan2((double)(y1 - yorigin), (double)(x1 - xorigin));
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5576 a2 = atan2((double)(y2 - yorigin), (double)(x2 - xorigin));
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5577 if(a2 < a1)
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5578 a2 += M_PI * 2;
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5579 a = (a1 + a2) / 2.;
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5580 /* Prepare to draw */
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5581 [aPath appendBezierPathWithArcFromPoint:NSMakePoint((xorigin + r * cos(a)), (yorigin + r * sin(a)))
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5582 toPoint:NSMakePoint(x2, y2) radius:r];
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5583 }
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5584 /* If the fill flag is passed */
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5585 if(flags & DW_DRAW_FILL)
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5586 {
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5587 [aPath fill];
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5588 }
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
5589 /* Actually do the drawing */
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5590 [aPath stroke];
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5591 if(pixmap)
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5592 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5593 [NSGraphicsContext restoreGraphicsState];
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5594 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5595 else
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5596 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5597 [image unlockFocus];
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5598 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5599 DW_MUTEX_UNLOCK;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5600 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
5601
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5602 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5603 * Create a tree object to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5604 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5605 * id: An ID to be used for getting the resource from the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5606 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5607 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5608 HWND API dw_tree_new(ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5609 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5610 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5611 DW_MUTEX_LOCK;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5612 NSScrollView *scrollview = [[NSScrollView alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5613 DWTree *tree = [[DWTree alloc] init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5614
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
5615 [tree setScrollview:scrollview];
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
5616 [scrollview setBorderType:NSBezelBorder];
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
5617 [scrollview setHasVerticalScroller:YES];
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
5618 [scrollview setAutohidesScrollers:YES];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5619
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
5620 [tree setAllowsMultipleSelection:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5621 [tree setDataSource:tree];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5622 [tree setDelegate:tree];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
5623 [scrollview setDocumentView:tree];
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
5624 [tree setHeaderView:nil];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5625 [tree setTag:cid];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
5626 [tree autorelease];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5627 DW_MUTEX_UNLOCK;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
5628 return tree;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5629 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5630
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5631 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5632 * Inserts an item into a tree window (widget) after another item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5633 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5634 * handle: Handle to the tree to be inserted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5635 * item: Handle to the item to be positioned after.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5636 * title: The text title of the entry.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5637 * icon: Handle to coresponding icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5638 * parent: Parent handle or 0 if root.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5639 * itemdata: Item specific data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5640 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
5641 HTREEITEM API dw_tree_insert_after(HWND handle, HTREEITEM item, char *title, HICN icon, HTREEITEM parent, void *itemdata)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5642 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5643 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5644 DW_MUTEX_LOCK;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
5645 DWTree *tree = handle;
935
114729f5aedc Needed to retain NSStrings in the tree view on Mac to prevent crashes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 934
diff changeset
5646 NSString *nstr = [[NSString stringWithUTF8String:title] retain];
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5647 NSMutableArray *treenode = [[[NSMutableArray alloc] init] retain];
1067
6ca1132a240e Allow tree nodes without icons using the new NSMutableArray tree code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1065
diff changeset
5648 if(icon)
6ca1132a240e Allow tree nodes without icons using the new NSMutableArray tree code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1065
diff changeset
5649 [treenode addObject:icon];
6ca1132a240e Allow tree nodes without icons using the new NSMutableArray tree code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1065
diff changeset
5650 else
6ca1132a240e Allow tree nodes without icons using the new NSMutableArray tree code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1065
diff changeset
5651 [treenode addObject:[NSNull null]];
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5652 [treenode addObject:nstr];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5653 [treenode addObject:[NSValue valueWithPointer:itemdata]];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5654 [treenode addObject:[NSNull null]];
1064
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
5655 [tree addTree:treenode and:parent after:item];
1063
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
5656 if(parent)
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
5657 [tree reloadItem:parent reloadChildren:YES];
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
5658 else
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
5659 [tree reloadData];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5660 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5661 return treenode;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5662 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5663
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5664 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5665 * Inserts an item into a tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5666 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5667 * handle: Handle to the tree to be inserted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5668 * title: The text title of the entry.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5669 * icon: Handle to coresponding icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5670 * parent: Parent handle or 0 if root.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5671 * itemdata: Item specific data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5672 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
5673 HTREEITEM API dw_tree_insert(HWND handle, char *title, HICN icon, HTREEITEM parent, void *itemdata)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5674 {
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
5675 return dw_tree_insert_after(handle, NULL, title, icon, parent, itemdata);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5676 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5677
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5678 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5679 * Gets the text an item in a tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5680 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5681 * handle: Handle to the tree containing the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5682 * item: Handle of the item to be modified.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5683 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5684 char * API dw_tree_get_title(HWND handle, HTREEITEM item)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5685 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5686 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5687 DW_MUTEX_LOCK;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5688 NSMutableArray *array = (NSMutableArray *)item;
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5689 NSString *nstr = (NSString *)[array objectAtIndex:1];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5690 DW_MUTEX_UNLOCK;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
5691 return strdup([nstr UTF8String]);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5692 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5693
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5694 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5695 * Gets the text an item in a tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5696 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5697 * handle: Handle to the tree containing the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5698 * item: Handle of the item to be modified.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5699 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5700 HTREEITEM API dw_tree_get_parent(HWND handle, HTREEITEM item)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5701 {
881
7b2750744552 Implemented dw_tree_get_parent() for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 873
diff changeset
5702 int _locked_by_me = FALSE;
7b2750744552 Implemented dw_tree_get_parent() for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 873
diff changeset
5703 HTREEITEM parent;
1064
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
5704 DWTree *tree = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5705
881
7b2750744552 Implemented dw_tree_get_parent() for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 873
diff changeset
5706 DW_MUTEX_LOCK;
1064
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
5707 parent = [tree parentForItem:item];
881
7b2750744552 Implemented dw_tree_get_parent() for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 873
diff changeset
5708 DW_MUTEX_UNLOCK;
7b2750744552 Implemented dw_tree_get_parent() for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 873
diff changeset
5709 return parent;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5710 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5711
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5712 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5713 * Sets the text and icon of an item in a tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5714 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5715 * handle: Handle to the tree containing the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5716 * item: Handle of the item to be modified.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5717 * title: The text title of the entry.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5718 * icon: Handle to coresponding icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5719 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
5720 void API dw_tree_item_change(HWND handle, HTREEITEM item, char *title, HICN icon)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5721 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5722 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5723 DW_MUTEX_LOCK;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5724 DWTree *tree = handle;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5725 NSMutableArray *array = (NSMutableArray *)item;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5726 if(title)
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5727 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5728 NSString *oldstr = [array objectAtIndex:1];
935
114729f5aedc Needed to retain NSStrings in the tree view on Mac to prevent crashes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 934
diff changeset
5729 NSString *nstr = [[NSString stringWithUTF8String:title] retain];
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5730 [array replaceObjectAtIndex:1 withObject:nstr];
935
114729f5aedc Needed to retain NSStrings in the tree view on Mac to prevent crashes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 934
diff changeset
5731 [oldstr release];
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5732 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5733 if(icon)
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5734 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5735 [array replaceObjectAtIndex:0 withObject:icon];
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5736 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5737 [tree reloadData];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5738 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5739 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5740
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5741 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5742 * Sets the item data of a tree item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5743 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5744 * handle: Handle to the tree containing the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5745 * item: Handle of the item to be modified.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5746 * itemdata: User defined data to be associated with item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5747 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5748 void API dw_tree_item_set_data(HWND handle, HTREEITEM item, void *itemdata)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5749 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5750 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5751 DW_MUTEX_LOCK;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5752 NSMutableArray *array = (NSMutableArray *)item;
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5753 [array replaceObjectAtIndex:2 withObject:[NSValue valueWithPointer:itemdata]];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5754 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5755 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5756
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5757 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5758 * Gets the item data of a tree item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5759 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5760 * handle: Handle to the tree containing the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5761 * item: Handle of the item to be modified.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5762 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5763 void * API dw_tree_item_get_data(HWND handle, HTREEITEM item)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5764 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5765 int _locked_by_me = FALSE;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5766 void *result = NULL;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5767 DW_MUTEX_LOCK;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5768 NSMutableArray *array = (NSMutableArray *)item;
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5769 NSValue *value = [array objectAtIndex:2];
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
5770 if(value)
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5771 {
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5772 result = [value pointerValue];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
5773 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5774 DW_MUTEX_UNLOCK;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5775 return result;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5776 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5777
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5778 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5779 * Sets this item as the active selection.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5780 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5781 * handle: Handle to the tree window (widget) to be selected.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5782 * item: Handle to the item to be selected.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5783 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5784 void API dw_tree_item_select(HWND handle, HTREEITEM item)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5785 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5786 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5787 DW_MUTEX_LOCK;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5788 DWTree *tree = handle;
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5789 NSInteger itemIndex = [tree rowForItem:item];
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5790 if(itemIndex > -1)
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5791 {
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5792 [tree selectRowIndexes:[NSIndexSet indexSetWithIndex:itemIndex] byExtendingSelection:NO];
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5793 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5794 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5795 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5796
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5797 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5798 * Removes all nodes from a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5799 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5800 * handle: Handle to the window (widget) to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5801 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5802 void API dw_tree_clear(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5803 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5804 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5805 DW_MUTEX_LOCK;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5806 DWTree *tree = handle;
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5807 [tree clear];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5808 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5809 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5810
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5811 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5812 * Expands a node on a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5813 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5814 * handle: Handle to the tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5815 * item: Handle to node to be expanded.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5816 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5817 void API dw_tree_item_expand(HWND handle, HTREEITEM item)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5818 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5819 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5820 DW_MUTEX_LOCK;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5821 DWTree *tree = handle;
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5822 [tree expandItem:item];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5823 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5824 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5825
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5826 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5827 * Collapses a node on a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5828 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5829 * handle: Handle to the tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5830 * item: Handle to node to be collapsed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5831 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5832 void API dw_tree_item_collapse(HWND handle, HTREEITEM item)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5833 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5834 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5835 DW_MUTEX_LOCK;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5836 DWTree *tree = handle;
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5837 [tree collapseItem:item];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5838 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5839 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5840
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5841 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5842 * Removes a node from a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5843 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5844 * handle: Handle to the window (widget) to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5845 * item: Handle to node to be deleted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5846 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5847 void API dw_tree_item_delete(HWND handle, HTREEITEM item)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5848 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5849 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5850 DW_MUTEX_LOCK;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5851 DWTree *tree = handle;
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5852 [tree deleteNode:item];
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
5853 [tree reloadData];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5854 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5855 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5856
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5857 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5858 * Create a container object to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5859 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5860 * id: An ID to be used for getting the resource from the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5861 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5862 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5863 HWND API dw_container_new(ULONG cid, int multi)
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5864 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5865 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5866 DW_MUTEX_LOCK;
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
5867 DWContainer *cont = _cont_new(cid, multi);
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
5868 NSScrollView *scrollview = [cont scrollview];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
5869 [scrollview setHasHorizontalScroller:YES];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
5870 NSTableHeaderView *header = [[[NSTableHeaderView alloc] init] autorelease];
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
5871 [cont setHeaderView:header];
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
5872 [cont setTarget:cont];
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
5873 [cont setDoubleAction:@selector(doubleClicked:)];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5874 DW_MUTEX_UNLOCK;
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
5875 return cont;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5876 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5877
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5878 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5879 * Sets up the container columns.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5880 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5881 * handle: Handle to the container to be configured.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5882 * flags: An array of unsigned longs with column flags.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5883 * titles: An array of strings with column text titles.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5884 * count: The number of columns (this should match the arrays).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5885 * separator: The column number that contains the main separator.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5886 * (this item may only be used in OS/2)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5887 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5888 int API dw_container_setup(HWND handle, unsigned long *flags, char **titles, int count, int separator)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5889 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5890 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5891 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5892 int z;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5893 DWContainer *cont = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5894
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5895 [cont setup];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5896
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5897 for(z=0;z<count;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5898 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5899 NSTableColumn *column = [[NSTableColumn alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5900 [[column headerCell] setStringValue:[ NSString stringWithUTF8String:titles[z] ]];
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
5901 if(flags[z] & DW_CFA_BITMAPORICON)
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
5902 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5903 NSImageCell *imagecell = [[NSImageCell alloc] init];
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
5904 [column setDataCell:imagecell];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5905 [imagecell release];
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
5906 }
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5907 else if(flags[z] & DW_CFA_STRINGANDICON)
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5908 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
5909 DWImageAndTextCell *browsercell = [[DWImageAndTextCell alloc] init];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5910 [column setDataCell:browsercell];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5911 [browsercell release];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5912 }
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5913 /* Defaults to left justified so just handle right and center */
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5914 if(flags[z] & DW_CFA_RIGHT)
855
0103a8751ab4 Removed an unnecessary method in the container (rowCount) and implemented container column alignment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 854
diff changeset
5915 {
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5916 [(NSCell *)[column dataCell] setAlignment:NSRightTextAlignment];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5917 [(NSCell *)[column headerCell] setAlignment:NSRightTextAlignment];
855
0103a8751ab4 Removed an unnecessary method in the container (rowCount) and implemented container column alignment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 854
diff changeset
5918 }
0103a8751ab4 Removed an unnecessary method in the container (rowCount) and implemented container column alignment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 854
diff changeset
5919 else if(flags[z] & DW_CFA_CENTER)
0103a8751ab4 Removed an unnecessary method in the container (rowCount) and implemented container column alignment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 854
diff changeset
5920 {
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5921 [(NSCell *)[column dataCell] setAlignment:NSCenterTextAlignment];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5922 [(NSCell *)[column headerCell] setAlignment:NSCenterTextAlignment];
855
0103a8751ab4 Removed an unnecessary method in the container (rowCount) and implemented container column alignment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 854
diff changeset
5923 }
795
f23cad02cfb3 Make listbox, container and tree cells uneditable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 794
diff changeset
5924 [column setEditable:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5925 [cont addTableColumn:column];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5926 [cont addColumn:column andType:(int)flags[z]];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5927 [column release];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5928 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5929 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: 983
diff changeset
5930 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5931 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5932
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5933 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5934 * Sets up the filesystem columns, note: filesystem always has an icon/filename field.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5935 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5936 * handle: Handle to the container to be configured.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5937 * flags: An array of unsigned longs with column flags.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5938 * titles: An array of strings with column text titles.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5939 * count: The number of columns (this should match the arrays).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5940 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5941 int API dw_filesystem_setup(HWND handle, unsigned long *flags, char **titles, int count)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5942 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5943 char **newtitles = malloc(sizeof(char *) * (count + 1));
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5944 unsigned long *newflags = malloc(sizeof(unsigned long) * (count + 1));
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
5945 DWContainer *cont = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5946
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5947 newtitles[0] = "Filename";
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5948
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5949 newflags[0] = DW_CFA_STRINGANDICON | DW_CFA_LEFT | DW_CFA_HORZSEPARATOR;
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5950
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5951 memcpy(&newtitles[1], titles, sizeof(char *) * count);
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5952 memcpy(&newflags[1], flags, sizeof(unsigned long) * count);
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5953
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
5954 dw_container_setup(handle, newflags, newtitles, count + 1, 0);
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
5955 [cont setFilesystem:YES];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5956
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5957 free(newtitles);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5958 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: 983
diff changeset
5959 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5960 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5961
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5962 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5963 * Allocates memory used to populate a container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5964 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5965 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5966 * rowcount: The number of items to be populated.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5967 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5968 void * API dw_container_alloc(HWND handle, int rowcount)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5969 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5970 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5971 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5972 DWContainer *cont = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5973 [cont addRows:rowcount];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5974 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5975 return cont;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5976 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5977
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5978 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5979 * Sets an item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5980 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5981 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5982 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5983 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5984 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5985 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5986 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5987 void API dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5988 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5989 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5990 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5991 DWContainer *cont = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5992 id object = nil;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5993 int type = [cont cellType:column];
801
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
5994 int lastadd = 0;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5995
801
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
5996 /* If pointer is NULL we are getting a change request instead of set */
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
5997 if(pointer)
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
5998 {
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
5999 lastadd = [cont lastAddPoint];
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
6000 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6001
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6002 if(data)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6003 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6004 if(type & DW_CFA_BITMAPORICON)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6005 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6006 object = *((NSImage **)data);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6007 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6008 else if(type & DW_CFA_STRING)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6009 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6010 char *str = *((char **)data);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6011 object = [ NSString stringWithUTF8String:str ];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6012 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6013 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6014 {
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6015 char textbuffer[101] = {0};
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6016
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6017 if(type & DW_CFA_ULONG)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6018 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6019 ULONG tmp = *((ULONG *)data);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6020
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6021 snprintf(textbuffer, 100, "%lu", tmp);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6022 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6023 else if(type & DW_CFA_DATE)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6024 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6025 struct tm curtm;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6026 CDATE cdate = *((CDATE *)data);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6027
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6028 memset( &curtm, 0, sizeof(curtm) );
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6029 curtm.tm_mday = cdate.day;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6030 curtm.tm_mon = cdate.month - 1;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6031 curtm.tm_year = cdate.year - 1900;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6032
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6033 strftime(textbuffer, 100, "%x", &curtm);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6034 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6035 else if(type & DW_CFA_TIME)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6036 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6037 struct tm curtm;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6038 CTIME ctime = *((CTIME *)data);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6039
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6040 memset( &curtm, 0, sizeof(curtm) );
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6041 curtm.tm_hour = ctime.hours;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6042 curtm.tm_min = ctime.minutes;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6043 curtm.tm_sec = ctime.seconds;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6044
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6045 strftime(textbuffer, 100, "%X", &curtm);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6046 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6047 if(textbuffer[0])
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6048 object = [ NSString stringWithUTF8String:textbuffer ];
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6049 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6050 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6051
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6052 [cont editCell:object at:(row+lastadd) and:column];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
6053 [cont setNeedsDisplay:YES];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6054 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6055 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6056
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6057 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6058 * Changes an existing item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6059 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6060 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6061 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6062 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6063 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6064 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6065 void API dw_container_change_item(HWND handle, int column, int row, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6066 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6067 dw_container_set_item(handle, NULL, column, row, data);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6068 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6069
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6070 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6071 * Changes an existing item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6072 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6073 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6074 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6075 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6076 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6077 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6078 void API dw_filesystem_change_item(HWND handle, int column, int row, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6079 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6080 dw_container_change_item(handle, column+1, row, data);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6081 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6082
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6083 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6084 * Changes an item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6085 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6086 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6087 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6088 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6089 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6090 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6091 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6092 void API dw_filesystem_change_file(HWND handle, int row, char *filename, HICN icon)
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6093 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6094 dw_filesystem_set_file(handle, NULL, row, filename, icon);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6095 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6096
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6097 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6098 * Sets an item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6099 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6100 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6101 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6102 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6103 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6104 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6105 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6106 void API dw_filesystem_set_file(HWND handle, void *pointer, int row, char *filename, HICN icon)
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6107 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6108 int _locked_by_me = FALSE;
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6109 DW_MUTEX_LOCK;
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6110 DWContainer *cont = handle;
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6111 DWImageAndTextCell *browsercell;
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6112 int lastadd = 0;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6113
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6114 /* If pointer is NULL we are getting a change request instead of set */
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6115 if(pointer)
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6116 {
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6117 lastadd = [cont lastAddPoint];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6118 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6119
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
6120 browsercell = [[[DWImageAndTextCell alloc] init] autorelease];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6121 [browsercell setImage:icon];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6122 [browsercell setStringValue:[ NSString stringWithUTF8String:filename ]];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6123 [cont editCell:browsercell at:(row+lastadd) and:0];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6124 [cont setNeedsDisplay:YES];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6125 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6126 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6127
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6128 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6129 * Sets an item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6130 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6131 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6132 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6133 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6134 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6135 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6136 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6137 void API dw_filesystem_set_item(HWND handle, void *pointer, int column, int row, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6138 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6139 dw_container_set_item(handle, pointer, column+1, row, data);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6140 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6141
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6142 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6143 * Gets column type for a container column
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6144 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6145 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6146 * column: Zero based column.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6147 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6148 int API dw_container_get_column_type(HWND handle, int column)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6149 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6150 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6151 DW_MUTEX_LOCK;
721
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6152 DWContainer *cont = handle;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6153 int rc;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6154 int flag = [cont cellType:column];
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6155 if(flag & DW_CFA_BITMAPORICON)
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6156 rc = DW_CFA_BITMAPORICON;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6157 else if(flag & DW_CFA_STRING)
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6158 rc = DW_CFA_STRING;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6159 else if(flag & DW_CFA_ULONG)
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6160 rc = DW_CFA_ULONG;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6161 else if(flag & DW_CFA_DATE)
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6162 rc = DW_CFA_DATE;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6163 else if(flag & DW_CFA_TIME)
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6164 rc = DW_CFA_TIME;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6165 else
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6166 rc = 0;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6167 DW_MUTEX_UNLOCK;
721
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
6168 return rc;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6169 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6170
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6171 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6172 * Gets column type for a filesystem container column
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6173 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6174 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6175 * column: Zero based column.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6176 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6177 int API dw_filesystem_get_column_type(HWND handle, int column)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6178 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6179 return dw_container_get_column_type(handle, column+1);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6180 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6181
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6182 /*
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6183 * Sets the alternating row colors for container window (widget) handle.
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6184 * Parameters:
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6185 * handle: The window (widget) handle.
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6186 * oddcolor: Odd row background color in DW_RGB format or a default color index.
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6187 * evencolor: Even row background color in DW_RGB format or a default color index.
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
6188 * DW_RGB_TRANSPARENT will disable coloring rows.
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
6189 * DW_CLR_DEFAULT will use the system default alternating row colors.
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6190 */
1291
b99b0b2c2826 Renamed dw_container_set_row_bg() to dw_container_set_stripe().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1288
diff changeset
6191 void API dw_container_set_stripe(HWND handle, unsigned long oddcolor, unsigned long evencolor)
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6192 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6193 int _locked_by_me = FALSE;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6194 DW_MUTEX_LOCK;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6195 DWContainer *cont = handle;
1212
5271d5cb27ac Implemented dw_container_set_row_bg() on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1210
diff changeset
6196 [cont setRowBgOdd:(oddcolor == DW_CLR_DEFAULT ? DW_RGB(230,230,230) : oddcolor)
5271d5cb27ac Implemented dw_container_set_row_bg() on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1210
diff changeset
6197 andEven:(evencolor == DW_CLR_DEFAULT ? DW_RGB_TRANSPARENT : evencolor)];
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6198 DW_MUTEX_UNLOCK;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6199 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6200
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6201 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6202 * Sets the width of a column in the container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6203 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6204 * handle: Handle to window (widget) of container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6205 * column: Zero based column of width being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6206 * width: Width of column in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6207 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6208 void API dw_container_set_column_width(HWND handle, int column, int width)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6209 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6210 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6211 DW_MUTEX_LOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6212 DWContainer *cont = handle;
831
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
6213 if([cont filesystem])
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
6214 {
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
6215 column++;
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
6216 }
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6217 NSTableColumn *col = [cont getColumn:column];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6218
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6219 [col setWidth:width];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6220 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6221 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6222
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6223 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6224 * Sets the title of a row in the container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6225 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6226 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6227 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6228 * title: String title of the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6229 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6230 void API dw_container_set_row_title(void *pointer, int row, char *title)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6231 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6232 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6233 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6234 DWContainer *cont = pointer;
821
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6235 int lastadd = [cont lastAddPoint];
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6236 [cont setRow:(row+lastadd) title:title];
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6237 DW_MUTEX_UNLOCK;
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6238 }
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6239
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6240
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6241 /*
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6242 * Sets the title of a row in the container.
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6243 * Parameters:
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6244 * handle: Handle to window (widget) of container.
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6245 * row: Zero based row of data being set.
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6246 * title: String title of the item.
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6247 */
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6248 void API dw_container_change_row_title(HWND handle, int row, char *title)
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6249 {
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6250 int _locked_by_me = FALSE;
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6251 DW_MUTEX_LOCK;
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
6252 DWContainer *cont = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6253 [cont setRow:row title:title];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6254 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6255 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6256
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6257 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6258 * Sets the title of a row in the container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6259 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6260 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6261 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6262 * rowcount: The number of rows to be inserted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6263 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6264 void API dw_container_insert(HWND handle, void *pointer, int rowcount)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6265 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6266 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6267 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6268 DWContainer *cont = handle;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6269 [cont reloadData];
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6270 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6271 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6272
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6273 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6274 * Removes all rows from a container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6275 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6276 * handle: Handle to the window (widget) to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6277 * redraw: TRUE to cause the container to redraw immediately.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6278 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6279 void API dw_container_clear(HWND handle, int redraw)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6280 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6281 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6282 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6283 DWContainer *cont = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6284 [cont clear];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6285 if(redraw)
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6286 {
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6287 [cont reloadData];
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6288 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6289 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6290 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6291
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6292 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6293 * Removes the first x rows from a container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6294 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6295 * handle: Handle to the window (widget) to be deleted from.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6296 * rowcount: The number of rows to be deleted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6297 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6298 void API dw_container_delete(HWND handle, int rowcount)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6299 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6300 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6301 DW_MUTEX_LOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6302 DWContainer *cont = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6303 int x;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6304
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6305 for(x=0;x<rowcount;x++)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6306 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6307 [cont removeRow:0];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6308 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6309 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6310 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6311
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6312 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6313 * Scrolls container up or down.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6314 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6315 * handle: Handle to the window (widget) to be scrolled.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6316 * direction: DW_SCROLL_UP, DW_SCROLL_DOWN, DW_SCROLL_TOP or
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6317 * DW_SCROLL_BOTTOM. (rows is ignored for last two)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6318 * rows: The number of rows to be scrolled.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6319 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6320 void API dw_container_scroll(HWND handle, int direction, long rows)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6321 {
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
6322 DWContainer *cont = handle;
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
6323 NSScrollView *sv = [cont scrollview];
852
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6324 NSScroller *scrollbar = [sv verticalScroller];
855
0103a8751ab4 Removed an unnecessary method in the container (rowCount) and implemented container column alignment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 854
diff changeset
6325 int rowcount = (int)[cont numberOfRowsInTableView:cont];
852
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6326 float currpos = [scrollbar floatValue];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6327 float change;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6328
853
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6329 /* Safety check */
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6330 if(rowcount < 1)
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6331 {
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6332 return;
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6333 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6334
853
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6335 change = (float)rows/(float)rowcount;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6336
852
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6337 switch(direction)
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6338 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6339 case DW_SCROLL_TOP:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6340 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6341 [scrollbar setFloatValue:0];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6342 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6343 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6344 case DW_SCROLL_BOTTOM:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6345 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6346 [scrollbar setFloatValue:1];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6347 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6348 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6349 case DW_SCROLL_UP:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6350 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6351 float newpos = currpos - change;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6352 if(newpos < 0)
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6353 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6354 newpos = 0;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6355 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6356 [scrollbar setFloatValue:newpos];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6357 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6358 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6359 case DW_SCROLL_DOWN:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6360 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6361 float newpos = currpos + change;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6362 if(newpos > 1)
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6363 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6364 newpos = 1;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6365 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6366 [scrollbar setFloatValue:newpos];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6367 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6368 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6369 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6370 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6371
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6372 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6373 * Starts a new query of a container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6374 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6375 * handle: Handle to the window (widget) to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6376 * flags: If this parameter is DW_CRA_SELECTED it will only
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6377 * return items that are currently selected. Otherwise
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6378 * it will return all records in the container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6379 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6380 char * API dw_container_query_start(HWND handle, unsigned long flags)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6381 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6382 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6383 DW_MUTEX_LOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6384 DWContainer *cont = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6385 NSIndexSet *selected = [cont selectedRowIndexes];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6386 NSUInteger result = [selected indexGreaterThanOrEqualToIndex:0];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6387 char *retval = NULL;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6388
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6389 if(result != NSNotFound)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6390 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6391 retval = [cont getRowTitle:(int)result];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6392 [cont setLastQueryPoint:(int)result];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6393 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6394 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6395 return retval;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6396 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6397
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6398 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6399 * Continues an existing query of a container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6400 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6401 * handle: Handle to the window (widget) to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6402 * flags: If this parameter is DW_CRA_SELECTED it will only
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6403 * return items that are currently selected. Otherwise
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6404 * it will return all records in the container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6405 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6406 char * API dw_container_query_next(HWND handle, unsigned long flags)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6407 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6408 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6409 DW_MUTEX_LOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6410 DWContainer *cont = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6411 int lastQueryPoint = [cont lastQueryPoint];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6412 NSIndexSet *selected = [cont selectedRowIndexes];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6413 NSUInteger result = [selected indexGreaterThanIndex:lastQueryPoint];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6414 char *retval = NULL;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6415
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6416 if(result != NSNotFound)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6417 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6418 retval = [cont getRowTitle:(int)result];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6419 [cont setLastQueryPoint:(int)result];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6420 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6421 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6422 return retval;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6423 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6424
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6425 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6426 * Cursors the item with the text speficied, and scrolls to that item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6427 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6428 * handle: Handle to the window (widget) to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6429 * text: Text usually returned by dw_container_query().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6430 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6431 void API dw_container_cursor(HWND handle, char *text)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6432 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6433 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6434 DW_MUTEX_LOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6435 DWContainer *cont = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6436 char *thistext;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6437 int x, count = (int)[cont numberOfRowsInTableView:cont];
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: 1318
diff changeset
6438 int textcomp = DW_POINTER_TO_INT(dw_window_get_data(handle, "_dw_textcomp"));
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6439
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6440 for(x=0;x<count;x++)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6441 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6442 thistext = [cont getRowTitle:x];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6443
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: 1318
diff changeset
6444 if((textcomp && thistext && strcmp(thistext, text) == 0) || (!textcomp && thistext == text))
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6445 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6446 NSIndexSet *selected = [[NSIndexSet alloc] initWithIndex:(NSUInteger)x];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6447
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6448 [cont selectRowIndexes:selected byExtendingSelection:YES];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6449 [selected release];
1334
5e2ec37d1680 Attempt to make dw_container_cursor() scroll to the item on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1322
diff changeset
6450 [cont scrollRowToVisible:x];
1335
44f8a846f3c1 A couple minor code cleanups on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1334
diff changeset
6451 DW_MUTEX_UNLOCK;
44f8a846f3c1 A couple minor code cleanups on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1334
diff changeset
6452 return;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6453 }
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6454 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6455 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6456 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6457
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6458 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6459 * Deletes the item with the text speficied.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6460 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6461 * handle: Handle to the window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6462 * text: Text usually returned by dw_container_query().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6463 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6464 void API dw_container_delete_row(HWND handle, char *text)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6465 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6466 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6467 DW_MUTEX_LOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6468 DWContainer *cont = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6469 char *thistext;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6470 int x, count = (int)[cont numberOfRowsInTableView:cont];
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: 1318
diff changeset
6471 int textcomp = DW_POINTER_TO_INT(dw_window_get_data(handle, "_dw_textcomp"));
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6472
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6473 for(x=0;x<count;x++)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6474 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6475 thistext = [cont getRowTitle:x];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6476
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: 1318
diff changeset
6477 if((textcomp && thistext && strcmp(thistext, text) == 0) || (!textcomp && thistext == text))
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6478 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6479 [cont removeRow:x];
1335
44f8a846f3c1 A couple minor code cleanups on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1334
diff changeset
6480 DW_MUTEX_UNLOCK;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6481 return;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6482 }
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6483 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6484 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6485 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6486
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6487 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6488 * Optimizes the column widths so that all data is visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6489 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6490 * handle: Handle to the window (widget) to be optimized.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6491 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6492 void API dw_container_optimize(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6493 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6494 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6495 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6496 DWContainer *cont = handle;
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
6497 [cont optimize];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6498 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6499 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6500
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6501 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6502 * Inserts an icon into the taskbar.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6503 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6504 * handle: Window handle that will handle taskbar icon messages.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6505 * icon: Icon handle to display in the taskbar.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6506 * bubbletext: Text to show when the mouse is above the icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6507 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6508 void API dw_taskbar_insert(HWND handle, HICN icon, char *bubbletext)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6509 {
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6510 NSStatusItem *item = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6511 NSImage *image = icon;
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6512 [item setImage:image];
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6513 if(bubbletext)
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6514 [item setToolTip:[NSString stringWithUTF8String:bubbletext]];
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6515 [item setTarget:handle];
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6516 [item setEnabled:YES];
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6517 [item setHighlightMode:YES];
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6518 [item sendActionOn:(NSLeftMouseUpMask|NSLeftMouseDownMask|NSRightMouseUpMask|NSRightMouseDownMask)];
1222
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
6519 [item setAction:@selector(mouseDown:)];
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6520 dw_window_set_data(handle, "_dw_taskbar", item);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6521 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6522
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6523 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6524 * Deletes an icon from the taskbar.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6525 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6526 * handle: Window handle that was used with dw_taskbar_insert().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6527 * icon: Icon handle that was used with dw_taskbar_insert().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6528 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6529 void API dw_taskbar_delete(HWND handle, HICN icon)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6530 {
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6531 NSStatusItem *item = dw_window_get_data(handle, "_dw_taskbar");
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
6532 [item release];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6533 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6534
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6535 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6536 * Obtains an icon from a module (or header in GTK).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6537 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6538 * module: Handle to module (DLL) in OS/2 and Windows.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6539 * id: A unsigned long id int the resources on OS/2 and
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6540 * Windows, on GTK this is converted to a pointer
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6541 * to an embedded XPM.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6542 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6543 HICN API dw_icon_load(unsigned long module, unsigned long resid)
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6544 {
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6545 NSBundle *bundle = [NSBundle mainBundle];
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6546 NSString *respath = [bundle resourcePath];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6547 NSString *filepath = [respath stringByAppendingFormat:@"/%u.png", resid];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6548 NSImage *image = [[NSImage alloc] initWithContentsOfFile:filepath];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6549 return image;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6550 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6551
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6552 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6553 * Obtains an icon from a file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6554 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6555 * filename: Name of the file, omit extention to have
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6556 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6557 * (ICO on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6558 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6559 HICN API dw_icon_load_from_file(char *filename)
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6560 {
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6561 char *ext = _dw_get_image_extension( filename );
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6562
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
6563 NSString *nstr = [ NSString stringWithUTF8String:filename ];
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
6564 NSImage *image = [[NSImage alloc] initWithContentsOfFile:nstr];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6565 if(!image && ext)
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6566 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6567 nstr = [nstr stringByAppendingString: [NSString stringWithUTF8String:ext]];
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
6568 image = [[NSImage alloc] initWithContentsOfFile:nstr];
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
6569 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6570 return image;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6571 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6572
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6573 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6574 * Obtains an icon from data
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6575 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6576 * filename: Name of the file, omit extention to have
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6577 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6578 * (ICO on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6579 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6580 HICN API dw_icon_load_from_data(char *data, int len)
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6581 {
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6582 NSData *thisdata = [NSData dataWithBytes:data length:len];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6583 NSImage *image = [[NSImage alloc] initWithData:thisdata];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6584 return image;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6585 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6586
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6587 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6588 * Frees a loaded resource in OS/2 and Windows.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6589 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6590 * handle: Handle to icon returned by dw_icon_load().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6591 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6592 void API dw_icon_free(HICN handle)
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6593 {
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6594 NSImage *image = handle;
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
6595 [image release];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6596 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6597
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6598 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6599 * Create a new MDI Frame to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6600 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6601 * id: An ID to be used with dw_window_from_id or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6602 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6603 HWND API dw_mdi_new(unsigned long cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6604 {
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
6605 /* There isn't anything like quite like MDI on MacOS...
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
6606 * However we will make floating windows that hide
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
6607 * when the application is deactivated to simulate
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6608 * similar behavior.
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
6609 */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
6610 DWMDI *mdi = [[DWMDI alloc] init];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6611 /* [mdi setTag:cid]; Why doesn't this work? */
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
6612 return mdi;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6613 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6614
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6615 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6616 * Creates a splitbar window (widget) with given parameters.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6617 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6618 * type: Value can be DW_VERT or DW_HORZ.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6619 * topleft: Handle to the window to be top or left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6620 * bottomright: Handle to the window to be bottom or right.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6621 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6622 * A handle to a splitbar window or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6623 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6624 HWND API dw_splitbar_new(int type, HWND topleft, HWND bottomright, unsigned long cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6625 {
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
6626 id tmpbox = dw_box_new(DW_VERT, 0);
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6627 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6628 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6629 DWSplitBar *split = [[DWSplitBar alloc] init];
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
6630 [split setDelegate:split];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
6631 dw_box_pack_start(tmpbox, topleft, 0, 0, TRUE, TRUE, 0);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6632 [split addSubview:tmpbox];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
6633 [tmpbox autorelease];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6634 tmpbox = dw_box_new(DW_VERT, 0);
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
6635 dw_box_pack_start(tmpbox, bottomright, 0, 0, TRUE, TRUE, 0);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6636 [split addSubview:tmpbox];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
6637 [tmpbox autorelease];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6638 if(type == DW_VERT)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6639 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6640 [split setVertical:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6641 }
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
6642 else
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
6643 {
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
6644 [split setVertical:YES];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
6645 }
753
590eebc9b61f Preset the splitbar percent to 50% since Leopard doesn't set it automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 752
diff changeset
6646 /* Set the default percent to 50% split */
590eebc9b61f Preset the splitbar percent to 50% since Leopard doesn't set it automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 752
diff changeset
6647 [split setPercent:50.0];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6648 /* [split setTag:cid]; Why doesn't this work? */
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6649 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6650 return split;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6651 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6652
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6653 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6654 * Sets the position of a splitbar (pecentage).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6655 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6656 * handle: The handle to the splitbar returned by dw_splitbar_new().
1117
9ca5de2e59f8 Fixed the dw_splitbar_set() comment documentation. The percent parameter was missing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1115
diff changeset
6657 * percent: The position of the splitbar.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6658 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6659 void API dw_splitbar_set(HWND handle, float percent)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6660 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6661 DWSplitBar *split = handle;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6662 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6663 DW_MUTEX_LOCK;
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6664 NSRect rect = [split frame];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6665 float pos;
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6666 /* Calculate the position based on the size */
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6667 if([split isVertical])
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6668 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6669 pos = rect.size.width * (percent / 100.0);
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6670 }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6671 else
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6672 {
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6673 pos = rect.size.height * (percent / 100.0);
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6674 }
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6675 if(pos > 0)
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6676 {
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6677 [split setPosition:pos ofDividerAtIndex:0];
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6678 }
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6679 else
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6680 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6681 /* If we have no size.. wait until the resize
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6682 * event when we get an actual size to try
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6683 * to set the splitbar again.
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6684 */
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6685 [split setPercent:percent];
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6686 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6687 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6688 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6689
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6690 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6691 * Gets the position of a splitbar (pecentage).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6692 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6693 * handle: The handle to the splitbar returned by dw_splitbar_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6694 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6695 float API dw_splitbar_get(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6696 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6697 DWSplitBar *split = handle;
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6698 NSRect rect1 = [split frame];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6699 NSArray *subviews = [split subviews];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6700 NSView *view = [subviews objectAtIndex:0];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6701 NSRect rect2 = [view frame];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6702 float pos, total, retval = 0.0;
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6703 if([split isVertical])
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6704 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6705 total = rect1.size.width;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6706 pos = rect2.size.width;
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6707 }
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6708 else
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6709 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6710 total = rect1.size.height;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
6711 pos = rect2.size.height;
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6712 }
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6713 if(total > 0)
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6714 {
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6715 retval = pos / total;
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
6716 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6717 return retval;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6718 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6719
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6720 /* Internal function to convert fontname to NSFont */
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6721 NSFont *_dw_font_by_name(char *fontname)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6722 {
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6723 char *fontcopy = strdup(fontname);
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6724 char *name = strchr(fontcopy, '.');
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6725 NSFont *font = nil;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6726
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6727 if(name)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6728 {
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6729 int size = atoi(fontcopy);
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6730 *name = 0;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6731 name++;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6732 font = [NSFont fontWithName:[ NSString stringWithUTF8String:name ] size:(float)size];
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6733 }
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6734 free(fontcopy);
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6735 return font;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6736 }
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6737
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6738 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6739 * Create a bitmap object to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6740 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6741 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6742 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6743 HWND API dw_bitmap_new(ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6744 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6745 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6746 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6747 NSImageView *bitmap = [[NSImageView alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6748 [bitmap setImageFrameStyle:NSImageFrameNone];
1074
53fc692279fc Bitmap widgets shouldn't scale down images when the widget is smaller than the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1071
diff changeset
6749 [bitmap setImageScaling:NSScaleNone];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6750 [bitmap setEditable:NO];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6751 [bitmap setTag:cid];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
6752 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6753 return bitmap;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6754 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6755
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6756 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6757 * Creates a pixmap with given parameters.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6758 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6759 * handle: Window handle the pixmap is associated with.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6760 * width: Width of the pixmap in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6761 * height: Height of the pixmap in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6762 * depth: Color depth of the pixmap.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6763 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6764 * A handle to a pixmap or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6765 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6766 HPIXMAP API dw_pixmap_new(HWND handle, unsigned long width, unsigned long height, int depth)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6767 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6768 HPIXMAP pixmap;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6769
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6770 if(!(pixmap = calloc(1,sizeof(struct _hpixmap))))
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6771 return NULL;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6772 pixmap->width = width;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6773 pixmap->height = height;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6774 pixmap->handle = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6775 pixmap->image = [[NSBitmapImageRep alloc]
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6776 initWithBitmapDataPlanes:NULL
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6777 pixelsWide:width
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6778 pixelsHigh:height
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6779 bitsPerSample:8
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6780 samplesPerPixel:4
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6781 hasAlpha:YES
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6782 isPlanar:NO
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6783 colorSpaceName:NSDeviceRGBColorSpace
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6784 bytesPerRow:0
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
6785 bitsPerPixel:0];
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6786 return pixmap;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6787 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6788
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6789 /* Function takes an NSImage and copies it into a flipped NSBitmapImageRep */
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6790 void _flip_image(NSImage *tmpimage, NSBitmapImageRep *image, NSSize size)
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6791 {
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6792 [NSGraphicsContext saveGraphicsState];
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6793 [NSGraphicsContext setCurrentContext:[NSGraphicsContext
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6794 graphicsContextWithGraphicsPort:[[NSGraphicsContext graphicsContextWithBitmapImageRep:image] graphicsPort]
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6795 flipped:YES]];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
6796 [[[NSDictionary alloc] initWithObjectsAndKeys:image, NSGraphicsContextDestinationAttributeName, nil] autorelease];
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6797 // make a new transform:
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6798 NSAffineTransform *t = [NSAffineTransform transform];
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6799
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6800 // by scaling Y negatively, we effectively flip the image:
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6801 [t scaleXBy:1.0 yBy:-1.0];
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6802
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6803 // but we also have to translate it back by its height:
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6804 [t translateXBy:0.0 yBy:-size.height];
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6805
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6806 // apply the transform:
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6807 [t concat];
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6808 [tmpimage drawAtPoint:NSMakePoint(0, 0) fromRect:NSMakeRect(0, 0, size.width, size.height)
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
6809 operation:NSCompositeSourceOver fraction:1.0];
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6810 [NSGraphicsContext restoreGraphicsState];
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6811 }
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6812
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6813 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6814 * Creates a pixmap from a file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6815 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6816 * handle: Window handle the pixmap is associated with.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6817 * filename: Name of the file, omit extention to have
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6818 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6819 * (BMP on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6820 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6821 * A handle to a pixmap or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6822 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6823 HPIXMAP API dw_pixmap_new_from_file(HWND handle, char *filename)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6824 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6825 HPIXMAP pixmap;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6826 char *ext = _dw_get_image_extension( filename );
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6827
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6828 if(!(pixmap = calloc(1,sizeof(struct _hpixmap))))
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6829 return NULL;
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
6830 NSString *nstr = [ NSString stringWithUTF8String:filename ];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
6831 NSImage *tmpimage = [[[NSImage alloc] initWithContentsOfFile:nstr] autorelease];
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6832 if(!tmpimage && ext)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6833 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6834 nstr = [nstr stringByAppendingString: [NSString stringWithUTF8String:ext]];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
6835 tmpimage = [[[NSImage alloc] initWithContentsOfFile:nstr] autorelease];
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6836 }
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6837 if(!tmpimage)
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6838 return NULL;
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6839 NSSize size = [tmpimage size];
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6840 NSBitmapImageRep *image = [[NSBitmapImageRep alloc]
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6841 initWithBitmapDataPlanes:NULL
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6842 pixelsWide:size.width
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6843 pixelsHigh:size.height
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6844 bitsPerSample:8
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6845 samplesPerPixel:4
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6846 hasAlpha:YES
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6847 isPlanar:NO
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6848 colorSpaceName:NSDeviceRGBColorSpace
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6849 bytesPerRow:0
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6850 bitsPerPixel:0];
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6851 _flip_image(tmpimage, image, size);
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6852 pixmap->width = size.width;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6853 pixmap->height = size.height;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6854 pixmap->image = image;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6855 pixmap->handle = handle;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6856 return pixmap;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6857 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6858
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6859 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6860 * Creates a pixmap from memory.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6861 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6862 * handle: Window handle the pixmap is associated with.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6863 * data: Source of the image data
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6864 * (BMP on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6865 * le: length of data
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6866 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6867 * A handle to a pixmap or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6868 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6869 HPIXMAP API dw_pixmap_new_from_data(HWND handle, char *data, int len)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6870 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6871 HPIXMAP pixmap;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6872
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6873 if(!(pixmap = calloc(1,sizeof(struct _hpixmap))))
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6874 return NULL;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6875 NSData *thisdata = [NSData dataWithBytes:data length:len];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
6876 NSImage *tmpimage = [[[NSImage alloc] initWithData:thisdata] autorelease];
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6877 if(!tmpimage)
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6878 return NULL;
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6879 NSSize size = [tmpimage size];
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6880 NSBitmapImageRep *image = [[NSBitmapImageRep alloc]
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6881 initWithBitmapDataPlanes:NULL
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6882 pixelsWide:size.width
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6883 pixelsHigh:size.height
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6884 bitsPerSample:8
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6885 samplesPerPixel:4
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6886 hasAlpha:YES
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6887 isPlanar:NO
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6888 colorSpaceName:NSDeviceRGBColorSpace
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6889 bytesPerRow:0
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6890 bitsPerPixel:0];
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
6891 _flip_image(tmpimage, image, size);
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6892 pixmap->width = size.width;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6893 pixmap->height = size.height;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6894 pixmap->image = image;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6895 pixmap->handle = handle;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6896 return pixmap;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6897 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6898
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6899 /*
890
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
6900 * Sets the transparent color for a pixmap
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
6901 * Parameters:
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
6902 * pixmap: Handle to a pixmap returned by
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
6903 * dw_pixmap_new..
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
6904 * color: transparent color
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
6905 * Note: This does nothing on Mac as transparency
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
6906 * is handled automatically
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6907 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6908 void API dw_pixmap_set_transparent_color( HPIXMAP pixmap, ULONG color )
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6909 {
890
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
6910 /* Don't do anything */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6911 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6912
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6913 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6914 * Creates a pixmap from internal resource graphic specified by id.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6915 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6916 * handle: Window handle the pixmap is associated with.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6917 * id: Resource ID associated with requested pixmap.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6918 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6919 * A handle to a pixmap or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6920 */
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6921 HPIXMAP API dw_pixmap_grab(HWND handle, ULONG resid)
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6922 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6923 HPIXMAP pixmap;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6924
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6925 if(!(pixmap = calloc(1,sizeof(struct _hpixmap))))
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6926 return NULL;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6927
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6928 NSBundle *bundle = [NSBundle mainBundle];
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6929 NSString *respath = [bundle resourcePath];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6930 NSString *filepath = [respath stringByAppendingFormat:@"/%u.png", resid];
1318
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6931 NSImage *temp = [[NSImage alloc] initWithContentsOfFile:filepath];
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6932
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6933 if(temp)
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6934 {
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6935 NSSize size = [temp size];
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6936 NSBitmapImageRep *image = [[NSBitmapImageRep alloc]
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6937 initWithBitmapDataPlanes:NULL
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6938 pixelsWide:size.width
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6939 pixelsHigh:size.height
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6940 bitsPerSample:8
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6941 samplesPerPixel:4
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6942 hasAlpha:YES
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6943 isPlanar:NO
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6944 colorSpaceName:NSDeviceRGBColorSpace
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6945 bytesPerRow:0
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6946 bitsPerPixel:0];
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6947 _flip_image(temp, image, size);
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6948 pixmap->width = size.width;
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6949 pixmap->height = size.height;
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6950 pixmap->image = image;
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6951 pixmap->handle = handle;
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6952 [temp release];
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6953 return pixmap;
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6954 }
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6955 free(pixmap);
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
6956 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6957 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6958
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6959 /*
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6960 * Sets the font used by a specified pixmap.
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6961 * Normally the pixmap font is obtained from the associated window handle.
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6962 * However this can be used to override that, or for pixmaps with no window.
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6963 * Parameters:
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6964 * pixmap: Handle to a pixmap returned by dw_pixmap_new() or
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6965 * passed to the application via a callback.
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6966 * fontname: Name and size of the font in the form "size.fontname"
1147
091ed7c20b3f Implemented dw_pixmap_set_font() on Windows. Added to export files on Windows and OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1146
diff changeset
6967 * Returns:
091ed7c20b3f Implemented dw_pixmap_set_font() on Windows. Added to export files on Windows and OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1146
diff changeset
6968 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6969 */
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6970 int API dw_pixmap_set_font(HPIXMAP pixmap, char *fontname)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6971 {
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6972 if(pixmap)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6973 {
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6974 NSFont *font = _dw_font_by_name(fontname);
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6975
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6976 if(font)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6977 {
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6978 NSFont *oldfont = pixmap->font;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6979 [font retain];
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6980 pixmap->font = font;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6981 if(oldfont)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6982 [oldfont release];
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6983 return DW_ERROR_NONE;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6984 }
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6985 }
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6986 return DW_ERROR_GENERAL;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6987 }
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6988
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6989 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6990 * Destroys an allocated pixmap.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6991 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6992 * pixmap: Handle to a pixmap returned by
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6993 * dw_pixmap_new..
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6994 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6995 void API dw_pixmap_destroy(HPIXMAP pixmap)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6996 {
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6997 if(pixmap)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6998 {
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6999 NSBitmapImageRep *image = (NSBitmapImageRep *)pixmap->image;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
7000 NSFont *font = pixmap->font;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
7001 [image release];
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
7002 [font release];
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
7003 free(pixmap);
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
7004 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7005 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7006
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7007 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7008 * Copies from one item to another.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7009 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7010 * dest: Destination window handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7011 * destp: Destination pixmap. (choose only one).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7012 * xdest: X coordinate of destination.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7013 * ydest: Y coordinate of destination.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7014 * width: Width of area to copy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7015 * height: Height of area to copy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7016 * src: Source window handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7017 * srcp: Source pixmap. (choose only one).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7018 * xsrc: X coordinate of source.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7019 * ysrc: Y coordinate of source.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7020 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7021 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)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7022 {
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7023 dw_pixmap_stretch_bitblt(dest, destp, xdest, ydest, width, height, src, srcp, xsrc, ysrc, -1, -1);
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7024 }
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7025
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7026 /*
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7027 * Copies from one surface to another allowing for stretching.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7028 * Parameters:
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7029 * dest: Destination window handle.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7030 * destp: Destination pixmap. (choose only one).
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7031 * xdest: X coordinate of destination.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7032 * ydest: Y coordinate of destination.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7033 * width: Width of the target area.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7034 * height: Height of the target area.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7035 * src: Source window handle.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7036 * srcp: Source pixmap. (choose only one).
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7037 * xsrc: X coordinate of source.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7038 * ysrc: Y coordinate of source.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7039 * srcwidth: Width of area to copy.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7040 * srcheight: Height of area to copy.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7041 * Returns:
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7042 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7043 */
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7044 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)
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7045 {
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7046 DWBitBlt *bltinfo = calloc(1, sizeof(DWBitBlt));
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7047 NSValue* bi = [NSValue valueWithPointer:bltinfo];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7048
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7049 /* Sanity checks */
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7050 if((!dest && !destp) || (!src && !srcp) ||
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7051 ((srcwidth == -1 || srcheight == -1) && srcwidth != srcheight))
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7052 return DW_ERROR_GENERAL;
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7053
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7054 /* Fill in the information */
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7055 bltinfo->dest = dest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7056 bltinfo->src = src;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7057 bltinfo->xdest = xdest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7058 bltinfo->ydest = ydest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7059 bltinfo->width = width;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7060 bltinfo->height = height;
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7061 bltinfo->xsrc = xsrc;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7062 bltinfo->ysrc = ysrc;
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7063 bltinfo->srcwidth = srcwidth;
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7064 bltinfo->srcheight = srcheight;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7065
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7066 if(destp)
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7067 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
7068 bltinfo->dest = (id)destp->image;
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7069 }
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7070 if(srcp)
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7071 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
7072 id object = bltinfo->src = (id)srcp->image;
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7073 [object retain];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7074 }
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7075 [DWObj performSelectorOnMainThread:@selector(doBitBlt:) withObject:bi waitUntilDone:YES];
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7076 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7077 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7078
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7079 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7080 * Create a new static text window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7081 * Not available under OS/2, eCS
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7082 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7083 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7084 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7085 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7086 HWND API dw_calendar_new(ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7087 {
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7088 DWCalendar *calendar = [[DWCalendar alloc] init];
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7089 [calendar setDatePickerMode:NSSingleDateMode];
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7090 [calendar setDatePickerStyle:NSClockAndCalendarDatePickerStyle];
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7091 [calendar setDatePickerElements:NSYearMonthDayDatePickerElementFlag];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7092 [calendar setTag:cid];
1120
b2e060f43329 Initialize the calendar control to the current date during creation on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1117
diff changeset
7093 [calendar setDateValue:[NSDate date]];
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7094 return calendar;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7095 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7096
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7097 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7098 * Sets the current date of a calendar
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7099 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7100 * handle: The handle to the calendar returned by dw_calendar_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7101 * year...
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7102 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7103 void dw_calendar_set_date(HWND handle, unsigned int year, unsigned int month, unsigned int day)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7104 {
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7105 DWCalendar *calendar = handle;
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7106 NSDate *date;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
7107 char buffer[101];
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
7108
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
7109 snprintf(buffer, 100, "%04d-%02d-%02d 00:00:00 +0600", year, month, day);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7110
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7111 date = [[NSDate alloc] initWithString:[ NSString stringWithUTF8String:buffer ]];
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7112 [calendar setDateValue:date];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7113 [date release];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7114 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7115
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7116 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7117 * Gets the position of a splitbar (pecentage).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7118 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7119 * handle: The handle to the splitbar returned by dw_splitbar_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7120 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7121 void dw_calendar_get_date(HWND handle, unsigned int *year, unsigned int *month, unsigned int *day)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7122 {
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7123 DWCalendar *calendar = handle;
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7124 NSDate *date = [calendar dateValue];
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7125 NSDateFormatter *df = [[NSDateFormatter alloc] init];
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7126 [df setDateStyle:NSDateFormatterShortStyle];
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7127 NSString *nstr = [df stringFromDate:date];
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7128 sscanf([ nstr UTF8String ], "%d/%d/%d", month, day, year);
730
d3fb3613726a Calendar control should return years with 4 digits not 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 729
diff changeset
7129 if(*year < 70)
d3fb3613726a Calendar control should return years with 4 digits not 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 729
diff changeset
7130 {
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7131 *year += 2000;
730
d3fb3613726a Calendar control should return years with 4 digits not 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 729
diff changeset
7132 }
d3fb3613726a Calendar control should return years with 4 digits not 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 729
diff changeset
7133 else if(*year < 100)
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7134 {
730
d3fb3613726a Calendar control should return years with 4 digits not 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 729
diff changeset
7135 *year += 1900;
d3fb3613726a Calendar control should return years with 4 digits not 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 729
diff changeset
7136 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7137 [df release];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7138 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7139
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7140 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7141 * Causes the embedded HTML widget to take action.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7142 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7143 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7144 * action: One of the DW_HTML_* constants.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7145 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7146 void API dw_html_action(HWND handle, int action)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7147 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7148 WebView *html = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7149 switch(action)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7150 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7151 case DW_HTML_GOBACK:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7152 [html goBack];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7153 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7154 case DW_HTML_GOFORWARD:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7155 [html goForward];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7156 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7157 case DW_HTML_GOHOME:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7158 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7159 case DW_HTML_SEARCH:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7160 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7161 case DW_HTML_RELOAD:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7162 [html reload:html];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7163 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7164 case DW_HTML_STOP:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7165 [html stopLoading:html];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7166 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7167 case DW_HTML_PRINT:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7168 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7169 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7170 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7171
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7172 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7173 * Render raw HTML code in the embedded HTML widget..
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7174 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7175 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7176 * string: String buffer containt HTML code to
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7177 * be rendered.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7178 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7179 * 0 on success.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7180 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7181 int API dw_html_raw(HWND handle, char *string)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7182 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7183 WebView *html = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7184 [[html mainFrame] loadHTMLString:[ NSString stringWithUTF8String:string ] baseURL:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7185 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7186 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7187
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7188 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7189 * Render file or web page in the embedded HTML widget..
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7190 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7191 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7192 * url: Universal Resource Locator of the web or
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7193 * file object to be rendered.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7194 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7195 * 0 on success.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7196 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7197 int API dw_html_url(HWND handle, char *url)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7198 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7199 WebView *html = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7200 [[html mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[ NSString stringWithUTF8String:url ]]]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7201 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7202 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7203
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7204 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7205 * Create a new HTML window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7206 * Not available under OS/2, eCS
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7207 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7208 * text: The default text to be in the entryfield widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7209 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7210 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7211 HWND API dw_html_new(unsigned long cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7212 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7213 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7214 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7215 WebView *web = [[WebView alloc] init];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7216 /* [web setTag:cid]; Why doesn't this work? */
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7217 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7218 return web;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7219 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7220
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7221 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7222 * Returns the current X and Y coordinates of the mouse pointer.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7223 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7224 * x: Pointer to variable to store X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7225 * y: Pointer to variable to store Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7226 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7227 void API dw_pointer_query_pos(long *x, long *y)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7228 {
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7229 NSPoint mouseLoc;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7230 mouseLoc = [NSEvent mouseLocation];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7231 if(x)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7232 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7233 *x = mouseLoc.x;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7234 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7235 if(y)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7236 {
946
c64d3ca566f9 Attempt at inverting the window position and mouse pointer coordinates on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 945
diff changeset
7237 *y = [[NSScreen mainScreen] frame].size.height - mouseLoc.y;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7238 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7239 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7240
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7241 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7242 * Sets the X and Y coordinates of the mouse pointer.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7243 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7244 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7245 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7246 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7247 void API dw_pointer_set_pos(long x, long y)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7248 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7249 /* From what I have read this isn't possible, agaist human interface rules */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7250 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7251
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7252 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7253 * Create a menu object to be popped up.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7254 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7255 * id: An ID to be used for getting the resource from the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7256 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7257 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7258 HMENUI API dw_menu_new(ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7259 {
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
7260 NSMenu *menu = [[NSMenu alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7261 [menu setAutoenablesItems:NO];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7262 /* [menu setTag:cid]; Why doesn't this work? */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7263 return menu;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7264 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7265
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7266 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7267 * Create a menubar on a window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7268 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7269 * location: Handle of a window frame to be attached to.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7270 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7271 HMENUI API dw_menubar_new(HWND location)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7272 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7273 NSWindow *window = location;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7274 NSMenu *windowmenu = _generate_main_menu();
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7275 [[window contentView] setMenu:windowmenu];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7276 return (HMENUI)windowmenu;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7277 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7278
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7279 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7280 * Destroys a menu created with dw_menubar_new or dw_menu_new.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7281 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7282 * menu: Handle of a menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7283 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7284 void API dw_menu_destroy(HMENUI *menu)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7285 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7286 NSMenu *thismenu = *menu;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7287 [thismenu release];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7288 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7289
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7290 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7291 * Pops up a context menu at given x and y coordinates.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7292 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7293 * menu: The handle the the existing menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7294 * parent: Handle to the window initiating the popup.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7295 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7296 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7297 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7298 void API dw_menu_popup(HMENUI *menu, HWND parent, int x, int y)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7299 {
702
e9a3d1da3d3e dw_menu_popup() now uses the coordinates specified instead of the event coorindates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 701
diff changeset
7300 NSMenu *thismenu = (NSMenu *)*menu;
711
82250177f814 Fix for popup menus not being created when window handle passed is a toplevel window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 710
diff changeset
7301 id object = parent;
82250177f814 Fix for popup menus not being created when window handle passed is a toplevel window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 710
diff changeset
7302 NSView *view = [object isKindOfClass:[NSWindow class]] ? [object contentView] : parent;
702
e9a3d1da3d3e dw_menu_popup() now uses the coordinates specified instead of the event coorindates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 701
diff changeset
7303 NSWindow *window = [view window];
701
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
7304 NSEvent *event = [DWApp currentEvent];
1225
f5b79d8b0694 Fixed positioning popup menu when the controlling window is not visible on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1222
diff changeset
7305 if(!window)
f5b79d8b0694 Fixed positioning popup menu when the controlling window is not visible on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1222
diff changeset
7306 window = [event window];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
7307 [thismenu autorelease];
946
c64d3ca566f9 Attempt at inverting the window position and mouse pointer coordinates on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 945
diff changeset
7308 NSPoint p = NSMakePoint(x, [[NSScreen mainScreen] frame].size.height - y);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7309 NSEvent* fake = [NSEvent mouseEventWithType:NSRightMouseDown
946
c64d3ca566f9 Attempt at inverting the window position and mouse pointer coordinates on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 945
diff changeset
7310 location:[window convertScreenToBase:p]
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7311 modifierFlags:0
702
e9a3d1da3d3e dw_menu_popup() now uses the coordinates specified instead of the event coorindates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 701
diff changeset
7312 timestamp:[event timestamp]
e9a3d1da3d3e dw_menu_popup() now uses the coordinates specified instead of the event coorindates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 701
diff changeset
7313 windowNumber:[window windowNumber]
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7314 context:[NSGraphicsContext currentContext]
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7315 eventNumber:1
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7316 clickCount:1
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7317 pressure:0.0];
702
e9a3d1da3d3e dw_menu_popup() now uses the coordinates specified instead of the event coorindates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 701
diff changeset
7318 [NSMenu popUpContextMenu:thismenu withEvent:fake forView:view];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7319 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7320
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7321 char _removetilde(char *dest, char *src)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7322 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7323 int z, cur=0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7324 char accel = '\0';
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7325
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7326 for(z=0;z<strlen(src);z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7327 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7328 if(src[z] != '~')
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7329 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7330 dest[cur] = src[z];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7331 cur++;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7332 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7333 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7334 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7335 accel = src[z+1];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7336 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7337 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7338 dest[cur] = 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7339 return accel;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7340 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7341
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7342 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7343 * Adds a menuitem or submenu to an existing menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7344 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7345 * menu: The handle the the existing menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7346 * title: The title text on the menu item to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7347 * id: An ID to be used for message passing.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7348 * flags: Extended attributes to set on the menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7349 * end: If TRUE memu is positioned at the end of the menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7350 * check: If TRUE menu is "check"able.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7351 * flags: Extended attributes to set on the menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7352 * submenu: Handle to an existing menu to be a submenu or NULL.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7353 */
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
7354 HWND API dw_menu_append_item(HMENUI menux, char *title, ULONG itemid, ULONG flags, int end, int check, HMENUI submenux)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7355 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7356 NSMenu *menu = menux;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7357 NSMenu *submenu = submenux;
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
7358 DWMenuItem *item = NULL;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7359 if(strlen(title) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7360 {
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
7361 [menu addItem:[DWMenuItem separatorItem]];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7362 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7363 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7364 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7365 char accel[2];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7366 char *newtitle = malloc(strlen(title)+1);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7367 NSString *nstr;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7368
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7369 accel[0] = _removetilde(newtitle, title);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7370 accel[1] = 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7371
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7372 nstr = [ NSString stringWithUTF8String:newtitle ];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7373 free(newtitle);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7374
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
7375 item = [[[DWMenuItem alloc] initWithTitle:nstr
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
7376 action:@selector(menuHandler:)
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
7377 keyEquivalent:[ NSString stringWithUTF8String:accel ]] autorelease];
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
7378 [menu addItem:item];
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
7379
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7380 [item setTag:itemid];
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
7381 if(check)
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
7382 {
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
7383 [item setCheck:YES];
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
7384 if(flags & DW_MIS_CHECKED)
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
7385 {
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
7386 [item setState:NSOnState];
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
7387 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7388 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7389 if(flags & DW_MIS_DISABLED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7390 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7391 [item setEnabled:NO];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7392 }
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7393
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7394 if(submenux)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7395 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7396 [submenu setTitle:nstr];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7397 [menu setSubmenu:submenu forItem:item];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7398 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7399 return item;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7400 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7401 return item;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7402 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7403
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7404 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7405 * Sets the state of a menu item check.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7406 * Deprecated; use dw_menu_item_set_state()
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7407 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7408 * menu: The handle the the existing menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7409 * id: Menuitem id.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7410 * check: TRUE for checked FALSE for not checked.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7411 */
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
7412 void API dw_menu_item_set_check(HMENUI menux, unsigned long itemid, int check)
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
7413 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7414 id menu = menux;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7415 NSMenuItem *menuitem = (NSMenuItem *)[menu itemWithTag:itemid];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7416
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7417 if(menuitem != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7418 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7419 if(check)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7420 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7421 [menuitem setState:NSOnState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7422 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7423 else
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7424 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7425 [menuitem setState:NSOffState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7426 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7427 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7428 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7429
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7430 /*
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7431 * Deletes the menu item specified.
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7432 * Parameters:
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7433 * menu: The handle to the menu in which the item was appended.
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7434 * id: Menuitem id.
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7435 * Returns:
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7436 * DW_ERROR_NONE (0) on success or DW_ERROR_UNKNOWN on failure.
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7437 */
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7438 int API dw_menu_delete_item(HMENUI menux, unsigned long itemid)
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7439 {
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7440 id menu = menux;
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7441 NSMenuItem *menuitem = (NSMenuItem *)[menu itemWithTag:itemid];
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7442
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7443 if(menuitem != nil)
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7444 {
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7445 [menu removeItem:menuitem];
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7446 return DW_ERROR_NONE;
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7447 }
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7448 return DW_ERROR_UNKNOWN;
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7449 }
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7450
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
7451 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7452 * Sets the state of a menu item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7453 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7454 * menu: The handle to the existing menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7455 * id: Menuitem id.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7456 * flags: DW_MIS_ENABLED/DW_MIS_DISABLED
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7457 * DW_MIS_CHECKED/DW_MIS_UNCHECKED
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7458 */
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
7459 void API dw_menu_item_set_state(HMENUI menux, unsigned long itemid, unsigned long state)
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
7460 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7461 id menu = menux;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7462 NSMenuItem *menuitem = (NSMenuItem *)[menu itemWithTag:itemid];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7463
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7464 if(menuitem != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7465 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7466 if(state & DW_MIS_CHECKED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7467 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7468 [menuitem setState:NSOnState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7469 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7470 else if(state & DW_MIS_UNCHECKED)
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7471 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7472 [menuitem setState:NSOffState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7473 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7474 if(state & DW_MIS_ENABLED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7475 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7476 [menuitem setEnabled:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7477 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7478 else if(state & DW_MIS_DISABLED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7479 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7480 [menuitem setEnabled:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7481 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7482 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7483 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7484
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
7485 /* Gets the notebook page from associated ID */
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
7486 DWNotebookPage *_notepage_from_id(DWNotebook *notebook, unsigned long pageid)
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
7487 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7488 NSArray *pages = [notebook tabViewItems];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7489 for(DWNotebookPage *notepage in pages)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7490 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7491 if([notepage pageid] == pageid)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7492 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7493 return notepage;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7494 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7495 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7496 return nil;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
7497 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
7498
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7499 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7500 * Create a notebook object to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7501 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7502 * id: An ID to be used for getting the resource from the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7503 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7504 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7505 HWND API dw_notebook_new(ULONG cid, int top)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7506 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7507 DWNotebook *notebook = [[DWNotebook alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7508 [notebook setDelegate:notebook];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7509 /* [notebook setTag:cid]; Why doesn't this work? */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7510 return notebook;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7511 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7512
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7513 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7514 * Adds a new page to specified notebook.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7515 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7516 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7517 * flags: Any additional page creation flags.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7518 * front: If TRUE page is added at the beginning.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7519 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7520 unsigned long API dw_notebook_page_new(HWND handle, ULONG flags, int front)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7521 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7522 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7523 NSInteger page = [notebook pageid];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7524 DWNotebookPage *notepage = [[DWNotebookPage alloc] initWithIdentifier:nil];
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
7525 [notepage setPageid:(int)page];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7526 if(front)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7527 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7528 [notebook insertTabViewItem:notepage atIndex:(NSInteger)0];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7529 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7530 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7531 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7532 [notebook addTabViewItem:notepage];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7533 }
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
7534 [notepage autorelease];
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
7535 [notebook setPageid:(int)(page+1)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7536 return (unsigned long)page;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7537 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7538
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7539 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7540 * Remove a page from a notebook.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7541 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7542 * handle: Handle to the notebook widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7543 * pageid: ID of the page to be destroyed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7544 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7545 void API dw_notebook_page_destroy(HWND handle, unsigned int pageid)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7546 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7547 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7548 DWNotebookPage *notepage = _notepage_from_id(notebook, pageid);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7549
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7550 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7551 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7552 [notebook removeTabViewItem:notepage];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7553 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7554 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7555
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7556 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7557 * Queries the currently visible page ID.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7558 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7559 * handle: Handle to the notebook widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7560 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7561 unsigned long API dw_notebook_page_get(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7562 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7563 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7564 DWNotebookPage *notepage = (DWNotebookPage *)[notebook selectedTabViewItem];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7565 return [notepage pageid];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7566 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7567
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7568 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7569 * Sets the currently visibale page ID.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7570 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7571 * handle: Handle to the notebook widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7572 * pageid: ID of the page to be made visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7573 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7574 void API dw_notebook_page_set(HWND handle, unsigned int pageid)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7575 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7576 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7577 DWNotebookPage *notepage = _notepage_from_id(notebook, pageid);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7578
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7579 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7580 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7581 [notebook selectTabViewItem:notepage];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7582 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7583 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7584
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7585 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7586 * Sets the text on the specified notebook tab.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7587 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7588 * handle: Notebook handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7589 * pageid: Page ID of the tab to set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7590 * text: Pointer to the text to set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7591 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7592 void API dw_notebook_page_set_text(HWND handle, ULONG pageid, char *text)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7593 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7594 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7595 DWNotebookPage *notepage = _notepage_from_id(notebook, pageid);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7596
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7597 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7598 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7599 [notepage setLabel:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7600 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7601 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7602
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7603 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7604 * Sets the text on the specified notebook tab status area.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7605 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7606 * handle: Notebook handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7607 * pageid: Page ID of the tab to set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7608 * text: Pointer to the text to set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7609 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7610 void API dw_notebook_page_set_status_text(HWND handle, ULONG pageid, char *text)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7611 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7612 /* Note supported here... do nothing */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7613 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7614
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7615 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7616 * Packs the specified box into the notebook page.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7617 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7618 * handle: Handle to the notebook to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7619 * pageid: Page ID in the notebook which is being packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7620 * page: Box handle to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7621 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7622 void API dw_notebook_pack(HWND handle, ULONG pageid, HWND page)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7623 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7624 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7625 DWNotebookPage *notepage = _notepage_from_id(notebook, pageid);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7626
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7627 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7628 {
667
28727d9a835c Fix for a rather serious notebook layout bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 666
diff changeset
7629 HWND tmpbox = dw_box_new(DW_VERT, 0);
28727d9a835c Fix for a rather serious notebook layout bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 666
diff changeset
7630 DWBox *box = tmpbox;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7631
667
28727d9a835c Fix for a rather serious notebook layout bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 666
diff changeset
7632 dw_box_pack_start(tmpbox, page, 0, 0, TRUE, TRUE, 0);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7633 [notepage setView:box];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7634 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7635 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7636
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7637 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7638 * Create a new Window Frame.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7639 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7640 * owner: The Owner's window handle or HWND_DESKTOP.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7641 * title: The Window title.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7642 * flStyle: Style flags, see the PM reference.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7643 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7644 HWND API dw_window_new(HWND hwndOwner, char *title, ULONG flStyle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7645 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7646 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7647 DW_MUTEX_LOCK;
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7648 NSRect frame = NSMakeRect(1,1,1,1);
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
7649 DWWindow *window = [[DWWindow alloc]
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7650 initWithContentRect:frame
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7651 styleMask:(flStyle | NSTexturedBackgroundWindowMask)
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7652 backing:NSBackingStoreBuffered
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7653 defer:false];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7654
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7655 [window setTitle:[ NSString stringWithUTF8String:title ]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7656
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7657 DWView *view = [[DWView alloc] init];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7658
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7659 [window setContentView:view];
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7660 [window setDelegate:view];
766
82cde14ec084 Enable recalculating the key view loop (keyboard focus list) automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 763
diff changeset
7661 [window setAutorecalculatesKeyViewLoop:YES];
944
cdb7a53e5515 Some motion notify changes... so it can handle events without the mouse button pressed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 943
diff changeset
7662 [window setAcceptsMouseMovedEvents:YES];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7663 [view release];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7664
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7665 /* If it isn't a toplevel window... */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7666 if(hwndOwner)
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7667 {
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7668 id object = hwndOwner;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7669
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7670 /* Check to see if the parent is an MDI window */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7671 if([object isMemberOfClass:[DWMDI class]])
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7672 {
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7673 /* Set the window level to be floating */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7674 [window setLevel:NSFloatingWindowLevel];
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7675 [window setHidesOnDeactivate:YES];
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7676 }
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7677 }
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7678 DW_MUTEX_UNLOCK;
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7679 return (HWND)window;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7680 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7681
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7682 /*
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7683 * Call a function from the window (widget)'s context.
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7684 * Parameters:
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7685 * handle: Window handle of the widget.
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7686 * function: Function pointer to be called.
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7687 * data: Pointer to the data to be passed to the function.
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7688 */
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7689 void API dw_window_function(HWND handle, void *function, void *data)
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7690 {
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7691 void **params = calloc(2, sizeof(void *));
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7692 NSValue *v = [NSValue valueWithPointer:params];
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7693 params[0] = function;
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7694 params[1] = data;
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7695 [DWObj performSelectorOnMainThread:@selector(doWindowFunc:) withObject:v waitUntilDone:YES];
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7696 free(params);
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7697 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7698
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7699
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
7700 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7701 * Changes the appearance of the mouse pointer.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7702 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7703 * handle: Handle to widget for which to change.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7704 * cursortype: ID of the pointer you want.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7705 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7706 void API dw_window_set_pointer(HWND handle, int pointertype)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7707 {
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7708 id object = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7709
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7710 if([ object isKindOfClass:[ NSView class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7711 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7712 NSView *view = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7713
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7714 if(pointertype == DW_POINTER_DEFAULT)
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7715 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7716 [view discardCursorRects];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7717 }
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7718 else if(pointertype == DW_POINTER_ARROW)
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7719 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7720 NSRect rect = [view frame];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7721 NSCursor *cursor = [NSCursor arrowCursor];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7722
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7723 [view addCursorRect:rect cursor:cursor];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7724 }
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7725 /* No cursor for DW_POINTER_CLOCK? */
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
7726 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7727 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7728
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7729 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7730 * Makes the window visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7731 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7732 * handle: The window handle to make visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7733 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7734 int API dw_window_show(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7735 {
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7736 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7737
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7738 if([ object isMemberOfClass:[ DWWindow class ] ])
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7739 {
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7740 DWWindow *window = handle;
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7741 NSRect rect = [[window contentView] frame];
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7742
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7743 if([window isMiniaturized])
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7744 {
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7745 [window deminiaturize:nil];
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7746 }
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7747 /* If we haven't been sized by a call.. */
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7748 if(rect.size.width <= 1 || rect.size.height <= 1)
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7749 {
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7750 /* Determine the contents size */
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7751 dw_window_set_size(handle, 0, 0);
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7752 }
1497
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7753 /* If the position was not set... generate a default
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7754 * default one in a similar pattern to SHELLPOSITION.
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7755 */
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7756 if(![window shown])
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7757 {
1497
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7758 static int defaultx = 0, defaulty = 0;
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7759 int cx = dw_screen_width(), cy = dw_screen_height();
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7760 int maxx = cx / 4, maxy = cy / 4;
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7761 NSPoint point;
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7762
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7763 rect = [window frame];
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
7764
1497
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7765 defaultx += 20;
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7766 defaulty += 20;
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7767 if(defaultx > maxx)
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7768 defaultx = 20;
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7769 if(defaulty > maxy)
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7770 defaulty = 20;
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7771
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7772 point.x = defaultx;
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7773 /* Take into account menu bar and inverted Y */
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7774 point.y = cy - defaulty - (int)rect.size.height - 22;
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7775
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
7776 [window setFrameOrigin:point];
1490
5393b56ec6d0 Autoposition code should only be run the first time on Mac, regardless of whether it was needed or not.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1489
diff changeset
7777 [window setShown:YES];
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7778 }
930
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
7779 [[window contentView] showWindow];
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7780 [window makeKeyAndOrderFront:nil];
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7781 }
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
7782 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7783 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7784
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7785 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7786 * Makes the window invisible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7787 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7788 * handle: The window handle to make visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7789 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7790 int API dw_window_hide(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7791 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7792 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7793
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7794 if([ object isKindOfClass:[ NSWindow class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7795 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7796 NSWindow *window = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7797
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
7798 [window orderOut:nil];
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
7799 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7800 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7801 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7802
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7803 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7804 * Sets the colors used by a specified window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7805 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7806 * handle: The window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7807 * fore: Foreground color in DW_RGB format or a default color index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7808 * back: Background color in DW_RGB format or a default color index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7809 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7810 int API dw_window_set_color(HWND handle, ULONG fore, ULONG back)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7811 {
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
7812 id object = handle;
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
7813 unsigned long _fore = _get_color(fore);
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
7814 unsigned long _back = _get_color(back);
811
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7815 NSColor *fg = NULL;
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7816 NSColor *bg = NULL;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7817
811
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7818 /* Get the NSColor for non-default colors */
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7819 if(fore != DW_CLR_DEFAULT)
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7820 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7821 fg = [NSColor colorWithDeviceRed: DW_RED_VALUE(_fore)/255.0 green: DW_GREEN_VALUE(_fore)/255.0 blue: DW_BLUE_VALUE(_fore)/255.0 alpha: 1];
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7822 }
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7823 if(back != DW_CLR_DEFAULT)
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7824 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7825 bg = [NSColor colorWithDeviceRed: DW_RED_VALUE(_back)/255.0 green: DW_GREEN_VALUE(_back)/255.0 blue: DW_BLUE_VALUE(_back)/255.0 alpha: 1];
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7826 }
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7827
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7828 /* Get the textfield from the spinbutton */
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7829 if([object isMemberOfClass:[DWSpinButton class]])
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7830 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7831 object = [object textfield];
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7832 }
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7833 /* Get the cell on classes using NSCell */
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7834 if([object isKindOfClass:[NSTextField class]])
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7835 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7836 id cell = [object cell];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7837
811
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7838 if(fg)
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7839 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7840 [cell setTextColor:fg];
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7841 }
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7842 }
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7843 if([object isKindOfClass:[NSTextField class]] || [object isKindOfClass:[NSButton class]])
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7844 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7845 id cell = [object cell];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7846
811
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7847 if(bg)
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7848 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7849 [cell setBackgroundColor:bg];
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7850 }
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
7851 }
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
7852 else if([object isMemberOfClass:[DWBox class]])
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
7853 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7854 DWBox *box = object;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7855
811
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7856 if(bg)
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7857 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7858 [box setColor:_back];
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7859 }
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
7860 }
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
7861 else if([object isKindOfClass:[NSTableView class]])
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
7862 {
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
7863 DWContainer *cont = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7864
811
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7865 if(bg)
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7866 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7867 [cont setBackgroundColor:bg];
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7868 }
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7869 if(fg)
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7870 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7871 [cont setForegroundColor:fg];
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
7872 }
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
7873 }
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
7874 else if([object isMemberOfClass:[DWMLE class]])
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
7875 {
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
7876 DWMLE *mle = handle;
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
7877 if(bg)
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
7878 {
1130
c3138ffd0de0 Implemented foreground color changes for MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1129
diff changeset
7879 [mle setBackgroundColor:bg];
c3138ffd0de0 Implemented foreground color changes for MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1129
diff changeset
7880 }
c3138ffd0de0 Implemented foreground color changes for MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1129
diff changeset
7881 if(fg)
c3138ffd0de0 Implemented foreground color changes for MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1129
diff changeset
7882 {
c3138ffd0de0 Implemented foreground color changes for MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1129
diff changeset
7883 NSTextStorage *ts = [mle textStorage];
c3138ffd0de0 Implemented foreground color changes for MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1129
diff changeset
7884 [ts setForegroundColor:fg];
c3138ffd0de0 Implemented foreground color changes for MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1129
diff changeset
7885 }
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
7886 }
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
7887 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7888 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7889
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7890 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7891 * Sets the font used by a specified window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7892 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7893 * handle: The window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7894 * border: Size of the window border in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7895 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7896 int API dw_window_set_border(HWND handle, int border)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7897 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7898 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7899 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7900
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7901 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7902 * Sets the style of a given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7903 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7904 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7905 * width: New width in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7906 * height: New height in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7907 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7908 void API dw_window_set_style(HWND handle, ULONG style, ULONG mask)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7909 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7910 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7911
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
7912 if(DWOSMinor > 5 && [object isMemberOfClass:[DWWindow class]])
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
7913 {
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
7914 DWWindow *window = object;
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
7915 int currentstyle = (int)[window styleMask];
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
7916 int tmp;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7917
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
7918 tmp = currentstyle | (int)mask;
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
7919 tmp ^= mask;
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
7920 tmp |= style;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7921
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
7922 [window setStyleMask:tmp];
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
7923 }
740
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
7924 else if([object isKindOfClass:[NSTextField class]])
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
7925 {
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
7926 NSTextField *tf = object;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7927
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
7928 [[tf cell] setAlignment:(style & 0xF)];
931
dfd84cefd80b Minor changes to vertical centering on (status) text fields on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 930
diff changeset
7929 if(mask & DW_DT_VCENTER)
dfd84cefd80b Minor changes to vertical centering on (status) text fields on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 930
diff changeset
7930 {
dfd84cefd80b Minor changes to vertical centering on (status) text fields on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 930
diff changeset
7931 [[tf cell] setVCenter:(style & DW_DT_VCENTER ? YES : NO)];
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
7932 }
740
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
7933 }
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7934 else if([object isMemberOfClass:[NSTextView class]])
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7935 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7936 NSTextView *tv = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7937 [tv setAlignment:(style & mask)];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7938 }
763
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
7939 else if([object isMemberOfClass:[DWButton class]])
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
7940 {
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
7941 DWButton *button = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7942
763
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
7943 if(mask & DW_BS_NOBORDER)
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
7944 {
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
7945 if(style & DW_BS_NOBORDER)
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
7946 [button setBordered:NO];
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
7947 else
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
7948 [button setBordered:YES];
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
7949 }
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
7950 }
1314
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7951 else if([object isMemberOfClass:[DWMenuItem class]])
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7952 {
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7953 if(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: 1313
diff changeset
7954 {
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7955 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: 1313
diff changeset
7956 [object setState:NSOnState];
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7957 else if(style & DW_MIS_UNCHECKED)
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7958 [object setState:NSOffState];
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7959 }
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7960 if(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: 1313
diff changeset
7961 {
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7962 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: 1313
diff changeset
7963 [object setEnabled:YES];
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7964 else if(style & DW_MIS_DISABLED)
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7965 [object setEnabled:NO];
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7966 }
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
7967 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7968 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7969
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7970 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7971 * Sets the default focus item for a window/dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7972 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7973 * window: Toplevel window or dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7974 * defaultitem: Handle to the dialog item to be default.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7975 */
766
82cde14ec084 Enable recalculating the key view loop (keyboard focus list) automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 763
diff changeset
7976 void API dw_window_default(HWND handle, HWND defaultitem)
82cde14ec084 Enable recalculating the key view loop (keyboard focus list) automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 763
diff changeset
7977 {
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
7978 DWWindow *window = handle;
872
13debcad9757 Another test fix at reported crash in dw_window_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 867
diff changeset
7979 id object = defaultitem;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7980
872
13debcad9757 Another test fix at reported crash in dw_window_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 867
diff changeset
7981 if([window isKindOfClass:[NSWindow class]] && [object isKindOfClass:[NSControl class]])
864
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
7982 {
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
7983 [window setInitialFirstResponder:defaultitem];
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
7984 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7985 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7986
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7987 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7988 * Sets window to click the default dialog item when an ENTER is pressed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7989 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7990 * window: Window (widget) to look for the ENTER press.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7991 * next: Window (widget) to move to next (or click)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7992 */
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
7993 void API dw_window_click_default(HWND handle, HWND next)
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
7994 {
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
7995 id object = handle;
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
7996 id control = next;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7997
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
7998 if([object isMemberOfClass:[DWWindow class]])
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
7999 {
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
8000 if([control isMemberOfClass:[DWButton class]])
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
8001 {
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
8002 NSWindow *window = object;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8003
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
8004 [window setDefaultButtonCell:control];
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
8005 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8006 }
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8007 else
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8008 {
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8009 if([control isMemberOfClass:[DWSpinButton class]])
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8010 {
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8011 control = [control textfield];
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8012 }
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8013 else if([control isMemberOfClass:[DWComboBox class]])
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8014 {
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8015 /* TODO: Figure out why the combobox can't be
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8016 * focused using makeFirstResponder method.
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8017 */
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8018 control = [control textfield];
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8019 }
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8020 [object setClickDefault:control];
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
8021 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8022 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8023
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8024 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8025 * Captures the mouse input to this window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8026 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8027 * handle: Handle to receive mouse input.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8028 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8029 void API dw_window_capture(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8030 {
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
8031 /* Don't do anything for now */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8032 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8033
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8034 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8035 * Releases previous mouse capture.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8036 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8037 void API dw_window_release(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8038 {
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
8039 /* Don't do anything for now */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8040 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8041
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8042 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8043 * Changes a window's parent to newparent.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8044 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8045 * handle: The window handle to destroy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8046 * newparent: The window's new parent window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8047 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8048 void API dw_window_reparent(HWND handle, HWND newparent)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8049 {
686
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8050 id object = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8051
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
8052 if([object isMemberOfClass:[DWWindow class]])
686
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8053 {
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8054 /* We can't actually reparent on MacOS but if the
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8055 * new parent is an MDI window, change to be a
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8056 * floating window... otherwise set it to normal.
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8057 */
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8058 NSWindow *window = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8059
686
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8060 /* If it isn't a toplevel window... */
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8061 if(newparent)
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8062 {
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8063 object = newparent;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8064
686
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8065 /* Check to see if the parent is an MDI window */
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8066 if([object isMemberOfClass:[DWMDI class]])
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8067 {
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8068 /* Set the window level to be floating */
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8069 [window setLevel:NSFloatingWindowLevel];
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8070 [window setHidesOnDeactivate:YES];
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8071 return;
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8072 }
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8073 }
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8074 /* Set the window back to a normal window */
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8075 [window setLevel:NSNormalWindowLevel];
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8076 [window setHidesOnDeactivate:NO];
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8077 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8078 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8079
1051
6919854298fd Added dw_font_choose() on Windows for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1050
diff changeset
8080 /* Allows the user to choose a font using the system's font chooser dialog.
6919854298fd Added dw_font_choose() on Windows for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1050
diff changeset
8081 * Parameters:
6919854298fd Added dw_font_choose() on Windows for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1050
diff changeset
8082 * currfont: current font
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8083 * Returns:
1051
6919854298fd Added dw_font_choose() on Windows for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1050
diff changeset
8084 * A malloced buffer with the selected font or NULL on error.
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8085 */
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8086 char * API dw_font_choose(char *currfont)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8087 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8088 /* Create the Color Chooser Dialog class. */
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8089 static DWFontChoose *fontDlg = nil;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8090 static NSFontManager *fontManager = nil;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8091 DWDialog *dialog;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8092 NSFont *font = nil;
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
8093
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8094 if(currfont)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8095 font = _dw_font_by_name(currfont);
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
8096
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8097 if(fontDlg)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8098 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8099 dialog = [fontDlg dialog];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8100 /* If someone is already waiting just return */
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8101 if(dialog)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8102 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8103 return NULL;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8104 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8105 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8106 else
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8107 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8108 [NSFontManager setFontPanelFactory:[DWFontChoose class]];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8109 fontManager = [NSFontManager sharedFontManager];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8110 fontDlg = (DWFontChoose *)[fontManager fontPanel:YES];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8111 }
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
8112
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8113 dialog = dw_dialog_new(fontDlg);
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8114 if(font)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8115 [fontManager setSelectedFont:font isMultiple:NO];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8116 else
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8117 [fontManager setSelectedFont:[NSFont fontWithName:@"Helvetica" size:9.0] isMultiple:NO];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8118 [fontDlg setDialog:dialog];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8119 [fontDlg setFontManager:fontManager];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8120 [fontManager orderFrontFontPanel:fontManager];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8121
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
8122
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8123 /* Wait for them to pick a color */
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8124 font = (NSFont *)dw_dialog_wait(dialog);
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8125 if(font)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8126 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8127 NSString *fontname = [font displayName];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8128 NSString *output = [NSString stringWithFormat:@"%d.%s", (int)[font pointSize], [fontname UTF8String]];
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
8129 return strdup([output UTF8String]);
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8130 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8131 return NULL;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8132 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8133
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8134 /* Internal function to return a pointer to an item struct
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8135 * with information about the packing information regarding object.
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8136 */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8137 Item *_box_item(id object)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8138 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8139 /* Find the item within the box it is packed into */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8140 if([object isKindOfClass:[DWBox class]] || [object isKindOfClass:[DWGroupBox class]] || [object isKindOfClass:[NSControl class]])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8141 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8142 DWBox *parent = (DWBox *)[object superview];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8143
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8144 /* Some controls are embedded in scrollviews...
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8145 * so get the parent of the scrollview in that case.
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8146 */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8147 if([object isKindOfClass:[NSTableView class]] && [parent isMemberOfClass:[NSClipView class]])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8148 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8149 object = [parent superview];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8150 parent = (DWBox *)[object superview];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8151 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8152
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8153 if([parent isKindOfClass:[DWBox class]] || [parent isKindOfClass:[DWGroupBox class]])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8154 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8155 Box *thisbox = [parent box];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8156 Item *thisitem = thisbox->items;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8157 int z;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8158
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8159 for(z=0;z<thisbox->count;z++)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8160 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8161 if(thisitem[z].hwnd == object)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8162 return &thisitem[z];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8163 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8164 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8165 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8166 return NULL;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8167 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8168
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8169 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8170 * Sets the font used by a specified window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8171 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8172 * handle: The window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8173 * fontname: Name and size of the font in the form "size.fontname"
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8174 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8175 int API dw_window_set_font(HWND handle, char *fontname)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8176 {
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8177 NSFont *font = _dw_font_by_name(fontname);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8178
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8179 if(font)
740
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
8180 {
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8181 id object = handle;
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8182 if([object window])
673
6d0f0dc7ff7c Some minor font fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 672
diff changeset
8183 {
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8184 [object lockFocus];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8185 [font set];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8186 [object unlockFocus];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8187 }
1040
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8188 if([object isMemberOfClass:[DWGroupBox class]])
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8189 {
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8190 [object setTitleFont:font];
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8191 }
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8192 else if([object isKindOfClass:[NSControl class]])
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8193 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8194 [object setFont:font];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8195 [[object cell] setFont:font];
673
6d0f0dc7ff7c Some minor font fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 672
diff changeset
8196 }
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8197 else if([object isMemberOfClass:[DWRender class]])
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8198 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8199 DWRender *render = object;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8200
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8201 [render setFont:font];
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8202 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8203 else
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8204 return DW_ERROR_UNKNOWN;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8205 /* If we changed the text... */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8206 Item *item = _box_item(handle);
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8207
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8208 /* Check to see if any of the sizes need to be recalculated */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8209 if(item && (item->origwidth == -1 || item->origheight == -1))
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8210 {
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8211 _control_size(handle, item->origwidth == -1 ? &item->width : NULL, item->origheight == -1 ? &item->height : NULL);
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8212 /* Queue a redraw on the top-level window */
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8213 _dw_redraw([object window], TRUE);
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8214 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8215 return DW_ERROR_NONE;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8216 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8217 return DW_ERROR_UNKNOWN;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8218 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8219
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8220 /*
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8221 * Returns the current font for the specified window
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8222 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8223 * handle: The window handle from which to obtain the font.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8224 */
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8225 char * API dw_window_get_font(HWND handle)
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8226 {
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8227 id object = handle;
1040
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8228 NSFont *font = nil;
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8229
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8230 if([object isMemberOfClass:[DWGroupBox class]])
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8231 {
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8232 font = [object titleFont];
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8233 }
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8234 else if([object isKindOfClass:[NSControl class]] || [object isMemberOfClass:[DWRender class]])
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8235 {
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8236 font = [object font];
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8237 }
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8238 if(font)
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
8239 {
1041
6a57bf20d8f9 Return displayName property instead of fontName property in dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1040
diff changeset
8240 NSString *fontname = [font displayName];
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8241 NSString *output = [NSString stringWithFormat:@"%d.%s", (int)[font pointSize], [fontname UTF8String]];
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8242 return strdup([output UTF8String]);
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8243 }
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8244 return NULL;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8245 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8246
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8247 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8248 * Destroys a window and all of it's children.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8249 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8250 * handle: The window handle to destroy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8251 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8252 int API dw_window_destroy(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8253 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
8254 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
8255 DW_MUTEX_LOCK;
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8256 id object = handle;
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8257
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8258 /* Handle destroying a top-level window */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8259 if([ object isKindOfClass:[ NSWindow class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8260 {
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
8261 DWWindow *window = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8262 [window close];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8263 }
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8264 /* Handle removing menu items from menus */
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8265 else if([ object isKindOfClass:[NSMenuItem class]])
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8266 {
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8267 NSMenu *menu = [object menu];
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8268
1376
52bbb1acce61 Don't release the menu item when destroying it on Mac... causes crashes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1375
diff changeset
8269 [menu removeItem:object];
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8270 }
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8271 /* Handle destroying a control or box */
1099
d1cea9be1436 Fixed dw_window_destroy() with groupboxes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1098
diff changeset
8272 else if([object isKindOfClass:[DWBox class]] || [object isKindOfClass:[DWGroupBox class]] || [object isKindOfClass:[NSControl class]])
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8273 {
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8274 DWBox *parent = (DWBox *)[object superview];
983
6abf763838c6 Allow checboxes and other "buttons" to have a blank title instead of the default "Button"
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 982
diff changeset
8275
6abf763838c6 Allow checboxes and other "buttons" to have a blank title instead of the default "Button"
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 982
diff changeset
8276 /* Some controls are embedded in scrollviews...
979
f6234f870e81 Attempt at fixing dw_window_destroy() for controls that are embedded in scrollviews on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 957
diff changeset
8277 * so get the parent of the scrollview in that case.
f6234f870e81 Attempt at fixing dw_window_destroy() for controls that are embedded in scrollviews on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 957
diff changeset
8278 */
1549
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
8279 if(([object isKindOfClass:[NSTableView class]] || [object isMemberOfClass:[DWMLE class]])
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
8280 && [parent isMemberOfClass:[NSClipView class]])
982
a4425bb24b77 Fixed dw_window_destroy() on container and trees... there are multiple parts to scrollviews aparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 981
diff changeset
8281 {
a4425bb24b77 Fixed dw_window_destroy() on container and trees... there are multiple parts to scrollviews aparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 981
diff changeset
8282 object = [parent superview];
980
94dde9b3dfc0 Ok so we need to set the object to be the right value in this case so it gets removed from the proper view on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 979
diff changeset
8283 parent = (DWBox *)[object superview];
979
f6234f870e81 Attempt at fixing dw_window_destroy() for controls that are embedded in scrollviews on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 957
diff changeset
8284 }
940
b5ae9cf15f68 Fix for returning wrong extension in _dw_get_image_extension; only worked for .ico files
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 939
diff changeset
8285
1099
d1cea9be1436 Fixed dw_window_destroy() with groupboxes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1098
diff changeset
8286 if([parent isKindOfClass:[DWBox class]] || [parent isKindOfClass:[DWGroupBox class]])
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8287 {
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8288 Box *thisbox = [parent box];
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8289 int z, index = -1;
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8290 Item *tmpitem, *thisitem = thisbox->items;
940
b5ae9cf15f68 Fix for returning wrong extension in _dw_get_image_extension; only worked for .ico files
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 939
diff changeset
8291
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8292 for(z=0;z<thisbox->count;z++)
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8293 {
982
a4425bb24b77 Fixed dw_window_destroy() on container and trees... there are multiple parts to scrollviews aparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 981
diff changeset
8294 if(thisitem[z].hwnd == object)
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8295 index = z;
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8296 }
940
b5ae9cf15f68 Fix for returning wrong extension in _dw_get_image_extension; only worked for .ico files
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 939
diff changeset
8297
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8298 if(index == -1)
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8299 {
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8300 DW_MUTEX_UNLOCK;
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8301 return 0;
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8302 }
940
b5ae9cf15f68 Fix for returning wrong extension in _dw_get_image_extension; only worked for .ico files
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 939
diff changeset
8303
982
a4425bb24b77 Fixed dw_window_destroy() on container and trees... there are multiple parts to scrollviews aparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 981
diff changeset
8304 [object removeFromSuperview];
1041
6a57bf20d8f9 Return displayName property instead of fontName property in dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1040
diff changeset
8305
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8306 tmpitem = malloc(sizeof(Item)*(thisbox->count-1));
940
b5ae9cf15f68 Fix for returning wrong extension in _dw_get_image_extension; only worked for .ico files
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 939
diff changeset
8307
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8308 /* Copy all but the current entry to the new list */
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8309 for(z=0;z<index;z++)
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8310 {
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8311 tmpitem[z] = thisitem[z];
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8312 }
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8313 for(z=index+1;z<thisbox->count;z++)
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8314 {
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8315 tmpitem[z-1] = thisitem[z];
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8316 }
940
b5ae9cf15f68 Fix for returning wrong extension in _dw_get_image_extension; only worked for .ico files
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 939
diff changeset
8317
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8318 thisbox->items = tmpitem;
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8319 free(thisitem);
940
b5ae9cf15f68 Fix for returning wrong extension in _dw_get_image_extension; only worked for .ico files
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 939
diff changeset
8320 thisbox->count--;
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8321 }
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
8322 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
8323 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8324 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8325 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8326
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8327 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8328 * Gets the text used for a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8329 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8330 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8331 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8332 * text: The text associsated with a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8333 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8334 char * API dw_window_get_text(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8335 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8336 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8337
1027
cbac281970a9 Added support for dw_window_get_text() on spinbutton controls on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1026
diff changeset
8338 if([object isMemberOfClass:[ DWSpinButton class]])
cbac281970a9 Added support for dw_window_get_text() on spinbutton controls on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1026
diff changeset
8339 {
cbac281970a9 Added support for dw_window_get_text() on spinbutton controls on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1026
diff changeset
8340 DWSpinButton *spinbutton = handle;
cbac281970a9 Added support for dw_window_get_text() on spinbutton controls on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1026
diff changeset
8341 handle = object = [spinbutton textfield];
cbac281970a9 Added support for dw_window_get_text() on spinbutton controls on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1026
diff changeset
8342 }
808
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
8343 if([ object isKindOfClass:[ NSWindow class ] ] || [ object isKindOfClass:[ NSButton class ] ])
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
8344 {
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
8345 id window = handle;
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
8346 NSString *nsstr = [ window title];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8347
808
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
8348 return strdup([ nsstr UTF8String ]);
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
8349 }
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
8350 else if([ object isKindOfClass:[ NSControl class ] ])
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8351 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8352 NSControl *control = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8353 NSString *nsstr = [ control stringValue];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8354
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8355 return strdup([ nsstr UTF8String ]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8356 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8357 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8358 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8359
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8360 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8361 * Sets the text used for a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8362 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8363 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8364 * text: The text associsated with a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8365 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8366 void API dw_window_set_text(HWND handle, char *text)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8367 {
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8368 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8369
1027
cbac281970a9 Added support for dw_window_get_text() on spinbutton controls on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1026
diff changeset
8370 if([object isMemberOfClass:[ DWSpinButton class]])
cbac281970a9 Added support for dw_window_get_text() on spinbutton controls on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1026
diff changeset
8371 {
cbac281970a9 Added support for dw_window_get_text() on spinbutton controls on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1026
diff changeset
8372 DWSpinButton *spinbutton = handle;
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8373 object = [spinbutton textfield];
1027
cbac281970a9 Added support for dw_window_get_text() on spinbutton controls on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1026
diff changeset
8374 }
807
f7016a38bedd Fix for dw_window_set_text() on buttons not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 806
diff changeset
8375 if([ object isKindOfClass:[ NSWindow class ] ] || [ object isKindOfClass:[ NSButton class ] ])
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8376 [object setTitle:[ NSString stringWithUTF8String:text ]];
807
f7016a38bedd Fix for dw_window_set_text() on buttons not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 806
diff changeset
8377 else if([ object isKindOfClass:[ NSControl class ] ])
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8378 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8379 NSControl *control = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8380 [control setStringValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8381 }
953
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
8382 else if([object isMemberOfClass:[DWGroupBox class]])
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
8383 {
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
8384 DWGroupBox *groupbox = handle;
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
8385 [groupbox setTitle:[NSString stringWithUTF8String:text]];
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
8386 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8387 else
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8388 return;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8389 /* If we changed the text... */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8390 Item *item = _box_item(handle);
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8391
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8392 /* Check to see if any of the sizes need to be recalculated */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8393 if(item && (item->origwidth == -1 || item->origheight == -1))
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8394 {
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8395 _control_size(handle, item->origwidth == -1 ? &item->width : NULL, item->origheight == -1 ? &item->height : NULL);
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8396 /* Queue a redraw on the top-level window */
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8397 _dw_redraw([object window], TRUE);
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8398 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8399 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8400
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8401 /*
1389
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
8402 * 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: 1385
diff changeset
8403 * Parameters:
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
8404 * 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: 1385
diff changeset
8405 * 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: 1385
diff changeset
8406 */
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
8407 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: 1385
diff changeset
8408 {
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
8409 id object = handle;
1400
ccd383e11ff8 Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1396
diff changeset
8410 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: 1396
diff changeset
8411 [object setToolTip:[NSString stringWithUTF8String:bubbletext]];
ccd383e11ff8 Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1396
diff changeset
8412 else
ccd383e11ff8 Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1396
diff changeset
8413 [object setToolTip:nil];
1389
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
8414 }
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
8415
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
8416 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8417 * Disables given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8418 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8419 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8420 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8421 void API dw_window_disable(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8422 {
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8423 id object = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8424
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8425 if([object isMemberOfClass:[NSScrollView class]])
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8426 {
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8427 NSScrollView *sv = handle;
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8428 object = [sv documentView];
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8429 }
1277
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
8430 if([object isKindOfClass:[NSControl class]] || [object isKindOfClass:[NSMenuItem class]])
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
8431 {
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
8432 [object setEnabled:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8433 }
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8434 if([object isKindOfClass:[NSTextView class]])
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8435 {
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8436 NSTextView *mle = object;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8437
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8438 [mle setEditable:NO];
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8439 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8440 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8441
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8442 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8443 * Enables given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8444 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8445 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8446 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8447 void API dw_window_enable(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8448 {
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8449 id object = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8450
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8451 if([object isMemberOfClass:[NSScrollView class]])
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8452 {
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8453 NSScrollView *sv = handle;
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8454 object = [sv documentView];
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8455 }
1277
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
8456 if([object isKindOfClass:[NSControl class]] || [object isKindOfClass:[NSMenuItem class]])
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
8457 {
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
8458 [object setEnabled:YES];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8459 }
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8460 if([object isKindOfClass:[NSTextView class]])
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8461 {
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8462 NSTextView *mle = object;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8463
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8464 [mle setEditable:YES];
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
8465 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8466 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8467
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8468 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8469 * Sets the bitmap used for a given static window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8470 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8471 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8472 * id: An ID to be used to specify the icon,
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8473 * (pass 0 if you use the filename param)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8474 * filename: a path to a file (Bitmap on OS/2 or
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8475 * Windows and a pixmap on Unix, pass
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8476 * NULL if you use the id param)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8477 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
8478 void API dw_window_set_bitmap_from_data(HWND handle, unsigned long cid, char *data, int len)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8479 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8480 NSObject *object = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8481 if([ object isKindOfClass:[ NSImageView class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8482 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8483 NSImageView *iv = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8484 NSData *thisdata = [NSData dataWithBytes:data length:len];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8485 NSImage *pixmap = [[NSImage alloc] initWithData:thisdata];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8486
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8487 if(pixmap)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8488 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8489 [iv setImage:pixmap];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8490 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
8491 [pixmap release];
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8492 /* If we changed the text... */
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8493 Item *item = _box_item(handle);
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8494
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8495 /* Check to see if any of the sizes need to be recalculated */
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8496 if(item && (item->origwidth == -1 || item->origheight == -1))
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8497 {
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8498 _control_size(handle, item->origwidth == -1 ? &item->width : NULL, item->origheight == -1 ? &item->height : NULL);
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8499 /* Queue a redraw on the top-level window */
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8500 _dw_redraw([iv window], TRUE);
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8501 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8502 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8503 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8504
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8505 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8506 * Sets the bitmap used for a given static window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8507 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8508 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8509 * id: An ID to be used to specify the icon,
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8510 * (pass 0 if you use the filename param)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8511 * filename: a path to a file (Bitmap on OS/2 or
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8512 * Windows and a pixmap on Unix, pass
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8513 * NULL if you use the id param)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8514 */
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8515 void API dw_window_set_bitmap(HWND handle, unsigned long resid, char *filename)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8516 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8517 NSObject *object = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8518 if([ object isKindOfClass:[ NSImageView class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8519 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8520 NSImageView *iv = handle;
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8521 NSImage *bitmap = nil;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8522
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8523 if(filename)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8524 {
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8525 bitmap = [[[NSImage alloc] initWithContentsOfFile:[ NSString stringWithUTF8String:filename ]] autorelease];
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8526 }
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8527 else if(resid > 0 && resid < 65536)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8528 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8529 bitmap = dw_icon_load(0, resid);
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8530 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8531
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8532 if(bitmap)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8533 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8534 [iv setImage:bitmap];
1421
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
8535 /* Queue a redraw on the top-level window */
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
8536 _dw_redraw([iv window], TRUE);
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8537 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8538 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8539 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8540
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8541 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8542 * Sets the icon used for a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8543 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8544 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8545 * id: An ID to be used to specify the icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8546 */
672
388f2a48aaae Missed one function to typedef. Fixed errors in the test program and switched to using
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 671
diff changeset
8547 void API dw_window_set_icon(HWND handle, HICN icon)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8548 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8549 /* This isn't needed, it is loaded from the bundle */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8550 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8551
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8552 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8553 * Gets the child window handle with specified ID.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8554 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8555 * handle: Handle to the parent window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8556 * id: Integer ID of the child.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8557 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
8558 HWND API dw_window_from_id(HWND handle, int cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8559 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8560 NSObject *object = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8561 NSView *view = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8562 if([ object isKindOfClass:[ NSWindow class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8563 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8564 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8565 view = [window contentView];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8566 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8567 return [view viewWithTag:cid];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8568 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8569
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8570 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8571 * Minimizes or Iconifies a top-level window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8572 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8573 * handle: The window handle to minimize.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8574 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8575 int API dw_window_minimize(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8576 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8577 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8578 [window miniaturize:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8579 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8580 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8581
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8582 /* Causes entire window to be invalidated and redrawn.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8583 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8584 * handle: Toplevel window handle to be redrawn.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8585 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8586 void API dw_window_redraw(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8587 {
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
8588 DWWindow *window = handle;
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
8589 [window setRedraw:YES];
941
18f194e1d71d dw_window_redraw() should relayout the window in addition to flushing the buffer on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 940
diff changeset
8590 [[window contentView] showWindow];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8591 [window flushWindow];
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
8592 [window setRedraw:NO];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8593 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8594
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8595 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8596 * Makes the window topmost.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8597 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8598 * handle: The window handle to make topmost.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8599 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8600 int API dw_window_raise(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8601 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8602 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8603 [window orderFront:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8604 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8605 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8606
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8607 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8608 * Makes the window bottommost.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8609 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8610 * handle: The window handle to make bottommost.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8611 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8612 int API dw_window_lower(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8613 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8614 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8615 [window orderBack:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8616 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8617 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8618
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8619 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8620 * Sets the size of a given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8621 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8622 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8623 * width: New width in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8624 * height: New height in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8625 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8626 void API dw_window_set_size(HWND handle, ULONG width, ULONG height)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8627 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
8628 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
8629 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8630 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8631
1494
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8632 if([ object isMemberOfClass:[ DWWindow class ] ])
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8633 {
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8634 DWWindow *window = handle;
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8635 Box *thisbox;
1478
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
8636 NSRect content, frame = NSMakeRect(0, 0, width, height);
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8637
1478
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
8638 /* Convert the external frame size to internal content size */
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
8639 content = [NSWindow contentRectForFrameRect:frame styleMask:[window styleMask]];
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
8640
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8641 /*
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8642 * The following is an attempt to dynamically size a window based on the size of its
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8643 * children before realization. Only applicable when width or height is less than one.
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8644 */
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8645 if((width < 1 || height < 1) && (thisbox = [[window contentView] box]))
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8646 {
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8647 int depth = 0;
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8648
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8649 /* Calculate space requirements */
1446
0d4fdf646caf Fix clang integer conversion warning on 64bit Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1442
diff changeset
8650 _resize_box(thisbox, &depth, (int)width, (int)height, 1);
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8651
1531
783a464afab2 Added window and box support to dw_window_get_preferred_size() on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1530
diff changeset
8652 /* Update components that need auto-sizing */
1478
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
8653 if(width < 1) content.size.width = thisbox->minwidth;
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
8654 if(height < 1) content.size.height = thisbox->minheight;
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8655 }
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8656
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
8657 /* Finally set the size */
1478
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
8658 [window setContentSize:content.size];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8659 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
8660 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8661 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8662
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8663 /*
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: 1425
diff changeset
8664 * 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: 1425
diff changeset
8665 * 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: 1425
diff changeset
8666 * 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: 1425
diff changeset
8667 * 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: 1425
diff changeset
8668 * 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: 1425
diff changeset
8669 */
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: 1425
diff changeset
8670 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: 1425
diff changeset
8671 {
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8672 id object = handle;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8673
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8674 if([object isMemberOfClass:[DWWindow class]])
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8675 {
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8676 Box *thisbox;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8677
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8678 if((thisbox = [[object contentView] box]))
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8679 {
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8680 int depth = 0;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8681 NSRect frame;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8682
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8683 /* Calculate space requirements */
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8684 _resize_box(thisbox, &depth, 0, 0, 1);
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8685
1531
783a464afab2 Added window and box support to dw_window_get_preferred_size() on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1530
diff changeset
8686 /* Figure out the border size */
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8687 frame = [NSWindow frameRectForContentRect:NSMakeRect(0, 0, thisbox->minwidth, thisbox->minheight) styleMask:[object styleMask]];
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8688
1531
783a464afab2 Added window and box support to dw_window_get_preferred_size() on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1530
diff changeset
8689 /* Return what was requested */
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8690 if(width) *width = frame.size.width;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8691 if(height) *height = frame.size.height;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8692 }
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8693 }
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8694 else if([object isMemberOfClass:[DWBox class]])
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8695 {
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8696 Box *thisbox;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8697
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8698 if((thisbox = [object box]))
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8699 {
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8700 int depth = 0;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8701
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8702 /* Calculate space requirements */
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8703 _resize_box(thisbox, &depth, 0, 0, 1);
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8704
1531
783a464afab2 Added window and box support to dw_window_get_preferred_size() on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1530
diff changeset
8705 /* Return what was requested */
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8706 if(width) *width = thisbox->minwidth;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8707 if(height) *height = thisbox->minheight;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8708 }
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8709 }
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8710 else
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
8711 _control_size(handle, width, height);
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: 1425
diff changeset
8712 }
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: 1425
diff changeset
8713
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: 1425
diff changeset
8714 /*
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8715 * Sets the gravity of a given window (widget).
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8716 * Gravity controls which corner of the screen and window the position is relative to.
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8717 * Parameters:
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8718 * handle: Window (widget) handle.
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8719 * horz: DW_GRAV_LEFT (default), DW_GRAV_RIGHT or DW_GRAV_CENTER.
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8720 * vert: DW_GRAV_TOP (default), DW_GRAV_BOTTOM or DW_GRAV_CENTER.
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8721 */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8722 void API dw_window_set_gravity(HWND handle, int horz, int vert)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8723 {
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8724 dw_window_set_data(handle, "_dw_grav_horz", DW_INT_TO_POINTER(horz));
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8725 dw_window_set_data(handle, "_dw_grav_vert", DW_INT_TO_POINTER(vert));
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8726 }
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8727
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8728 /* Convert the coordinates based on gravity */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8729 void _handle_gravity(HWND handle, long *x, long *y, unsigned long width, unsigned long height)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8730 {
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8731 int horz = DW_POINTER_TO_INT(dw_window_get_data(handle, "_dw_grav_horz"));
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8732 int vert = DW_POINTER_TO_INT(dw_window_get_data(handle, "_dw_grav_vert"));
1513
def1ca619ba2 Use the screen of the window when possible on Mac instead of the main screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1502
diff changeset
8733 id object = handle;
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8734
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8735 /* Do any gravity calculations */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8736 if(horz || (vert & 0xf) != DW_GRAV_BOTTOM)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8737 {
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8738 long newx = *x, newy = *y;
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8739
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8740 /* Handle horizontal center gravity */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8741 if((horz & 0xf) == DW_GRAV_CENTER)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8742 newx += ((dw_screen_width() / 2) - (width / 2));
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8743 /* Handle right gravity */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8744 else if((horz & 0xf) == DW_GRAV_RIGHT)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8745 newx = dw_screen_width() - width - *x;
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8746 /* Handle vertical center gravity */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8747 if((vert & 0xf) == DW_GRAV_CENTER)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8748 newy += ((dw_screen_height() / 2) - (height / 2));
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8749 else if((vert & 0xf) == DW_GRAV_TOP)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8750 newy = dw_screen_height() - height - *y;
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8751
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8752 /* Save the new values */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8753 *x = newx;
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8754 *y = newy;
1492
1608c2a9c2b8 Initial attempt at gravity obstacles on Mac.... doesn't work was trying to debug
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1490
diff changeset
8755 }
1608c2a9c2b8 Initial attempt at gravity obstacles on Mac.... doesn't work was trying to debug
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1490
diff changeset
8756 /* Adjust the values to avoid Dock/Menubar if requested */
1494
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8757 if((horz | vert) & DW_GRAV_OBSTACLES)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8758 {
1513
def1ca619ba2 Use the screen of the window when possible on Mac instead of the main screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1502
diff changeset
8759 NSRect visiblerect = [[object screen] visibleFrame];
def1ca619ba2 Use the screen of the window when possible on Mac instead of the main screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1502
diff changeset
8760 NSRect totalrect = [[object screen] frame];
1494
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8761
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8762 if(horz & DW_GRAV_OBSTACLES)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8763 {
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8764 if((horz & 0xf) == DW_GRAV_LEFT)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8765 *x += visiblerect.origin.x;
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8766 else if((horz & 0xf) == DW_GRAV_RIGHT)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8767 *x -= (totalrect.origin.x + totalrect.size.width) - (visiblerect.origin.x + visiblerect.size.width);
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8768 }
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8769 if(vert & DW_GRAV_OBSTACLES)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8770 {
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8771 if((vert & 0xf) == DW_GRAV_BOTTOM)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8772 *y += visiblerect.origin.y;
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8773 else if((vert & 0xf) == DW_GRAV_TOP)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8774 *y -= (totalrect.origin.y + totalrect.size.height) - (visiblerect.origin.y + visiblerect.size.height);
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
8775 }
1492
1608c2a9c2b8 Initial attempt at gravity obstacles on Mac.... doesn't work was trying to debug
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1490
diff changeset
8776 }
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8777 }
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8778
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8779 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8780 * Sets the position of a given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8781 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8782 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8783 * x: X location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8784 * y: Y location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8785 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8786 void API dw_window_set_pos(HWND handle, LONG x, LONG y)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8787 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
8788 int _locked_by_me = FALSE;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
8789 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8790 NSObject *object = handle;
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8791
1497
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
8792 if([ object isMemberOfClass:[ DWWindow class ] ])
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
8793 {
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
8794 DWWindow *window = handle;
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8795 NSPoint point;
1498
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
8796 NSSize size = [[window contentView] frame].size;
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
8797
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
8798 /* Can't position an unsized window, so attempt to auto-size */
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
8799 if(size.width <= 1 || size.height <= 1)
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
8800 {
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
8801 /* Determine the contents size */
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
8802 dw_window_set_size(handle, 0, 0);
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
8803 }
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
8804
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
8805 size = [window frame].size;
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8806 _handle_gravity(handle, &x, &y, (unsigned long)size.width, (unsigned long)size.height);
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8807
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8808 point.x = x;
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8809 point.y = y;
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
8810
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8811 [window setFrameOrigin:point];
1497
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
8812 /* Position set manually... don't auto-position */
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
8813 [window setShown:YES];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8814 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
8815 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8816 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8817
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8818 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8819 * Sets the position and size of a given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8820 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8821 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8822 * x: X location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8823 * y: Y location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8824 * width: Width of the widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8825 * height: Height of the widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8826 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8827 void API dw_window_set_pos_size(HWND handle, LONG x, LONG y, ULONG width, ULONG height)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8828 {
947
c9f6ba940453 On window sizes we need to flip the origin point on the frame too on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 946
diff changeset
8829 dw_window_set_size(handle, width, height);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8830 dw_window_set_pos(handle, x, y);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8831 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8832
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8833 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8834 * Gets the position and size of a given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8835 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8836 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8837 * x: X location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8838 * y: Y location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8839 * width: Width of the widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8840 * height: Height of the widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8841 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8842 void API dw_window_get_pos_size(HWND handle, LONG *x, LONG *y, ULONG *width, ULONG *height)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8843 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8844 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8845
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8846 if([ object isKindOfClass:[ NSWindow class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8847 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8848 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8849 NSRect rect = [window frame];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8850 if(x)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8851 *x = rect.origin.x;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8852 if(y)
1513
def1ca619ba2 Use the screen of the window when possible on Mac instead of the main screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1502
diff changeset
8853 *y = [[window screen] frame].size.height - rect.origin.y - rect.size.height;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8854 if(width)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8855 *width = rect.size.width;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8856 if(height)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8857 *height = rect.size.height;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8858 return;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8859 }
951
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8860 else if([ object isKindOfClass:[ NSControl class ] ])
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8861 {
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8862 NSControl *control = handle;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8863 NSRect rect = [control frame];
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8864 if(x)
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8865 *x = rect.origin.x;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8866 if(y)
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8867 *y = rect.origin.y;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8868 if(width)
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8869 *width = rect.size.width;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8870 if(height)
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8871 *height = rect.size.height;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8872 return;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
8873 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8874 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8875
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8876 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8877 * Returns the width of the screen.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8878 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8879 int API dw_screen_width(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8880 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8881 NSRect screenRect = [[NSScreen mainScreen] frame];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8882 return screenRect.size.width;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8883 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8884
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8885 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8886 * Returns the height of the screen.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8887 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8888 int API dw_screen_height(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8889 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8890 NSRect screenRect = [[NSScreen mainScreen] frame];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8891 return screenRect.size.height;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8892 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8893
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8894 /* This should return the current color depth */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8895 unsigned long API dw_color_depth_get(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8896 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8897 NSWindowDepth screenDepth = [[NSScreen mainScreen] depth];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8898 return NSBitsPerPixelFromDepth(screenDepth);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8899 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8900
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8901 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8902 * Returns some information about the current operating environment.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8903 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8904 * env: Pointer to a DWEnv struct.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8905 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8906 void dw_environment_query(DWEnv *env)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8907 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8908 struct utsname name;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8909
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8910 uname(&name);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8911 strcpy(env->osName, "MacOS");
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8912
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8913 strcpy(env->buildDate, __DATE__);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8914 strcpy(env->buildTime, __TIME__);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8915 env->DWMajorVersion = DW_MAJOR_VERSION;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8916 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
8917 #ifdef VER_REV
924c8087a755 Attempt to use the subversion revision number as the sub version number.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1158
diff changeset
8918 env->DWSubVersion = VER_REV;
924c8087a755 Attempt to use the subversion revision number as the sub version number.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1158
diff changeset
8919 #else
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8920 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
8921 #endif
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8922
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
8923 env->MajorVersion = DWOSMajor;
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
8924 env->MinorVersion = DWOSMinor;
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
8925 env->MajorBuild = DWOSBuild;
809
1ef0f4c03c14 MinorBuild was being left uninitialized.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 808
diff changeset
8926 env->MinorBuild = 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8927 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8928
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8929 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8930 * Emits a beep.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8931 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8932 * freq: Frequency.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8933 * dur: Duration.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8934 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8935 void API dw_beep(int freq, int dur)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8936 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8937 NSBeep();
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8938 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8939
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8940 /* Call this after drawing to the screen to make sure
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8941 * anything you have drawn is visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8942 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8943 void API dw_flush(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8944 {
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
8945 /* This may need to be thread specific */
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8946 [DWObj performSelectorOnMainThread:@selector(doFlush:) withObject:nil waitUntilDone:NO];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8947 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8948
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8949 /* Functions for managing the user data lists that are associated with
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8950 * a given window handle. Used in dw_window_set_data() and
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8951 * dw_window_get_data().
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8952 */
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8953 UserData *_find_userdata(UserData **root, char *varname)
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8954 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8955 UserData *tmp = *root;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8956
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8957 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8958 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8959 if(strcasecmp(tmp->varname, varname) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8960 return tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8961 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8962 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8963 return NULL;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8964 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8965
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8966 int _new_userdata(UserData **root, char *varname, void *data)
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8967 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8968 UserData *new = _find_userdata(root, varname);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8969
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8970 if(new)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8971 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8972 new->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8973 return TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8974 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8975 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8976 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8977 new = malloc(sizeof(UserData));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8978 if(new)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8979 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8980 new->varname = strdup(varname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8981 new->data = data;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8982
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8983 new->next = NULL;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8984
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8985 if (!*root)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8986 *root = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8987 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8988 {
1303
ca02c24e80c9 Experimental change to menu code on Windows to allow dw_window_enable/disable to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1302
diff changeset
8989 UserData *prev = *root, *tmp = prev->next;
ca02c24e80c9 Experimental change to menu code on Windows to allow dw_window_enable/disable to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1302
diff changeset
8990
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8991 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8992 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8993 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8994 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8995 }
1303
ca02c24e80c9 Experimental change to menu code on Windows to allow dw_window_enable/disable to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1302
diff changeset
8996 prev->next = new;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8997 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8998 return TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8999 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9000 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9001 return FALSE;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9002 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9003
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9004 int _remove_userdata(UserData **root, char *varname, int all)
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9005 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9006 UserData *prev = NULL, *tmp = *root;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9007
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9008 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9009 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9010 if(all || strcasecmp(tmp->varname, varname) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9011 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9012 if(!prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9013 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9014 *root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9015 free(tmp->varname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9016 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9017 if(!all)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9018 return 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9019 tmp = *root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9020 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9021 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9022 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9023 /* If all is true we should
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9024 * never get here.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9025 */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9026 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9027 free(tmp->varname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9028 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9029 return 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9030 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9031 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9032 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9033 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9034 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9035 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9036 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9037 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9038 return 0;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9039 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9040
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9041 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9042 * Add a named user data item to a window handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9043 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9044 * window: Window handle of signal to be called back.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9045 * dataname: A string pointer identifying which signal to be hooked.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9046 * data: User data to be passed to the handler function.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9047 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9048 void dw_window_set_data(HWND window, char *dataname, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9049 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9050 id object = window;
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
9051 if([object isMemberOfClass:[DWWindow class]])
681
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9052 {
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9053 NSWindow *win = window;
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9054 object = [win contentView];
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9055 }
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9056 else if([object isMemberOfClass:[NSScrollView class]])
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
9057 {
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
9058 NSScrollView *sv = window;
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
9059 object = [sv documentView];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
9060 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9061 WindowData *blah = (WindowData *)[object userdata];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9062
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9063 if(!blah)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9064 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9065 if(!dataname)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9066 return;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9067
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9068 blah = calloc(1, sizeof(WindowData));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9069 [object setUserdata:blah];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9070 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9071
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9072 if(data)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9073 _new_userdata(&(blah->root), dataname, data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9074 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9075 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9076 if(dataname)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9077 _remove_userdata(&(blah->root), dataname, FALSE);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9078 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9079 _remove_userdata(&(blah->root), NULL, TRUE);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9080 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9081 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9082
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9083 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9084 * Gets a named user data item to a window handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9085 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9086 * window: Window handle of signal to be called back.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9087 * dataname: A string pointer identifying which signal to be hooked.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9088 * data: User data to be passed to the handler function.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9089 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9090 void *dw_window_get_data(HWND window, char *dataname)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9091 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9092 id object = window;
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
9093 if([object isMemberOfClass:[DWWindow class]])
681
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9094 {
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9095 NSWindow *win = window;
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9096 object = [win contentView];
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9097 }
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9098 else if([object isMemberOfClass:[NSScrollView class]])
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
9099 {
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
9100 NSScrollView *sv = window;
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
9101 object = [sv documentView];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
9102 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9103 WindowData *blah = (WindowData *)[object userdata];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9104
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9105 if(blah && blah->root && dataname)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9106 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9107 UserData *ud = _find_userdata(&(blah->root), dataname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9108 if(ud)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9109 return ud->data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9110 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9111 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9112 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9113
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
9114 #define DW_TIMER_MAX 64
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
9115 NSTimer *DWTimers[DW_TIMER_MAX];
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
9116
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9117 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9118 * Add a callback to a timer event.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9119 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9120 * interval: Milliseconds to delay between calls.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9121 * sigfunc: The pointer to the function to be used as the callback.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9122 * data: User data to be passed to the handler function.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9123 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9124 * Timer ID for use with dw_timer_disconnect(), 0 on error.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9125 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9126 int API dw_timer_connect(int interval, void *sigfunc, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9127 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9128 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9129
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9130 for(z=0;z<DW_TIMER_MAX;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9131 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9132 if(!DWTimers[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9133 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9134 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9135 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9136 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9137
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9138 if(sigfunc && !DWTimers[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9139 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9140 NSTimeInterval seconds = (double)interval / 1000.0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9141 NSTimer *thistimer = DWTimers[z] = [NSTimer scheduledTimerWithTimeInterval:seconds target:DWHandler selector:@selector(runTimer:) userInfo:nil repeats:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9142 _new_signal(0, thistimer, z+1, sigfunc, data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9143 return z+1;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9144 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9145 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9146 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9147
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9148 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9149 * Removes timer callback.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9150 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9151 * id: Timer ID returned by dw_timer_connect().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9152 */
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
9153 void API dw_timer_disconnect(int timerid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9154 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9155 SignalHandler *prev = NULL, *tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9156 NSTimer *thistimer;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9157
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9158 /* 0 is an invalid timer ID */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9159 if(timerid < 1 || !DWTimers[timerid-1])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9160 return;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9161
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9162 thistimer = DWTimers[timerid-1];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9163 DWTimers[timerid-1] = nil;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9164
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9165 [thistimer invalidate];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9166
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9167 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9168 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9169 if(tmp->id == timerid && tmp->window == thistimer)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9170 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9171 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9172 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9173 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9174 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9175 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9176 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9177 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9178 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9179 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9180 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9181 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9182 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9183 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9184 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9185 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9186 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9187 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9188 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9189 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9190 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9191
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9192 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9193 * Add a callback to a window event.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9194 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9195 * window: Window handle of signal to be called back.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9196 * signame: A string pointer identifying which signal to be hooked.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9197 * sigfunc: The pointer to the function to be used as the callback.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9198 * data: User data to be passed to the handler function.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9199 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9200 void API dw_signal_connect(HWND window, char *signame, void *sigfunc, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9201 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9202 ULONG message = 0, msgid = 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9203
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9204 if(window && signame && sigfunc)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9205 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9206 if((message = _findsigmessage(signame)) != 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9207 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9208 _new_signal(message, window, (int)msgid, sigfunc, data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9209 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9210 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9211 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9212
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9213 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9214 * Removes callbacks for a given window with given name.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9215 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9216 * window: Window handle of callback to be removed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9217 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9218 void API dw_signal_disconnect_by_name(HWND window, char *signame)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9219 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9220 SignalHandler *prev = NULL, *tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9221 ULONG message;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9222
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9223 if(!window || !signame || (message = _findsigmessage(signame)) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9224 return;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9225
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9226 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9227 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9228 if(tmp->window == window && tmp->message == message)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9229 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9230 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9231 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9232 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9233 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9234 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9235 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9236 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9237 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9238 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9239 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9240 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9241 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9242 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9243 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9244 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9245 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9246 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9247 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9248 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9249 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9250
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9251 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9252 * Removes all callbacks for a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9253 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9254 * window: Window handle of callback to be removed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9255 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9256 void API dw_signal_disconnect_by_window(HWND window)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9257 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9258 SignalHandler *prev = NULL, *tmp = Root;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9259
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9260 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9261 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9262 if(tmp->window == window)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9263 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9264 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9265 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9266 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9267 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9268 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9269 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9270 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9271 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9272 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9273 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9274 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9275 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9276 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9277 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9278 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9279 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9280 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9281 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9282 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9283 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9284
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9285 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9286 * Removes all callbacks for a given window with specified data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9287 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9288 * window: Window handle of callback to be removed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9289 * data: Pointer to the data to be compared against.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9290 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9291 void API dw_signal_disconnect_by_data(HWND window, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9292 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9293 SignalHandler *prev = NULL, *tmp = Root;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9294
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9295 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9296 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9297 if(tmp->window == window && tmp->data == data)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9298 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9299 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9300 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9301 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9302 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9303 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9304 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9305 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9306 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9307 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9308 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9309 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9310 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9311 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9312 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9313 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9314 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9315 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9316 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9317 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9318 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9319
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9320 void _my_strlwr(char *buf)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9321 {
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1102
diff changeset
9322 int z, len = (int)strlen(buf);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9323
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9324 for(z=0;z<len;z++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9325 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9326 if(buf[z] >= 'A' && buf[z] <= 'Z')
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9327 buf[z] -= 'A' - 'a';
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9328 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9329 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9330
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9331 /* Open a shared library and return a handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9332 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9333 * name: Base name of the shared library.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9334 * handle: Pointer to a module handle,
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9335 * will be filled in with the handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9336 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9337 int dw_module_load(char *name, HMOD *handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9338 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9339 int len;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9340 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: 1303
diff changeset
9341 char errorbuf[1025];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9342
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9343
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9344 if(!handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9345 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9346
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1102
diff changeset
9347 if((len = (int)strlen(name)) == 0)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9348 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9349
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9350 /* Lenth + "lib" + ".dylib" + NULL */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9351 newname = malloc(len + 10);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9352
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9353 if(!newname)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9354 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9355
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9356 sprintf(newname, "lib%s.dylib", name);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9357 _my_strlwr(newname);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9358
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9359 *handle = dlopen(newname, RTLD_NOW);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9360 if(*handle == NULL)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9361 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9362 strncpy(errorbuf, dlerror(), 1024);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9363 printf("%s\n", errorbuf);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9364 sprintf(newname, "lib%s.dylib", name);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9365 *handle = dlopen(newname, RTLD_NOW);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9366 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9367
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9368 free(newname);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9369
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9370 return (NULL == *handle) ? -1 : 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9371 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9372
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9373 /* Queries the address of a symbol within open handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9374 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9375 * handle: Module handle returned by dw_module_load()
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9376 * name: Name of the symbol you want the address of.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9377 * func: A pointer to a function pointer, to obtain
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9378 * the address.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9379 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9380 int dw_module_symbol(HMOD handle, char *name, void**func)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9381 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9382 if(!func || !name)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9383 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9384
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9385 if(strlen(name) == 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9386 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9387
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9388 *func = (void*)dlsym(handle, name);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9389 return (NULL == *func);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9390 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9391
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9392 /* Frees the shared library previously opened.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9393 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9394 * handle: Module handle returned by dw_module_load()
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9395 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9396 int dw_module_close(HMOD handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9397 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9398 if(handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9399 return dlclose(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9400 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9401 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9402
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9403 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9404 * Returns the handle to an unnamed mutex semaphore.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9405 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9406 HMTX dw_mutex_new(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9407 {
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
9408 HMTX mutex = malloc(sizeof(pthread_mutex_t));
727
f190b5c2ce16 Fixed 2 errors in the tree select event handler. Also removed unused experimental code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 726
diff changeset
9409
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
9410 pthread_mutex_init(mutex, NULL);
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
9411 return mutex;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9412 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9413
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9414 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9415 * Closes a semaphore created by dw_mutex_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9416 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9417 * mutex: The handle to the mutex returned by dw_mutex_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9418 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9419 void dw_mutex_close(HMTX mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9420 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9421 if(mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9422 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9423 pthread_mutex_destroy(mutex);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9424 free(mutex);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9425 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9426 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9427
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9428 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9429 * Tries to gain access to the semaphore, if it can't it blocks.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9430 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9431 * mutex: The handle to the mutex returned by dw_mutex_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9432 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9433 void dw_mutex_lock(HMTX mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9434 {
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
9435 /* We need to handle locks from the main thread differently...
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9436 * since we can't stop message processing... otherwise we
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
9437 * will deadlock... so try to acquire the lock and continue
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
9438 * processing messages in between tries.
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
9439 */
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
9440 if(DWThread == pthread_self())
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
9441 {
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
9442 while(pthread_mutex_trylock(mutex) != 0)
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
9443 {
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
9444 /* Process any pending events */
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
9445 while(_dw_main_iteration([NSDate dateWithTimeIntervalSinceNow:0.01]))
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
9446 {
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
9447 /* Just loop */
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
9448 }
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
9449 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
9450 }
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
9451 else
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
9452 {
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
9453 pthread_mutex_lock(mutex);
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
9454 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9455 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9456
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9457 /*
1158
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
9458 * 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: 1155
diff changeset
9459 * Parameters:
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
9460 * 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: 1155
diff changeset
9461 * Returns:
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
9462 * 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: 1155
diff changeset
9463 */
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
9464 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: 1155
diff changeset
9465 {
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
9466 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: 1155
diff changeset
9467 return DW_ERROR_NONE;
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
9468 return DW_ERROR_TIMEOUT;
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
9469 }
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
9470
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
9471 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9472 * Reliquishes the access to the semaphore.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9473 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9474 * mutex: The handle to the mutex returned by dw_mutex_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9475 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9476 void dw_mutex_unlock(HMTX mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9477 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9478 pthread_mutex_unlock(mutex);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9479 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9480
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9481 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9482 * Returns the handle to an unnamed event semaphore.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9483 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9484 HEV dw_event_new(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9485 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9486 HEV eve = (HEV)malloc(sizeof(struct _dw_unix_event));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9487
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9488 if(!eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9489 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9490
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9491 /* We need to be careful here, mutexes on Linux are
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9492 * FAST by default but are error checking on other
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9493 * systems such as FreeBSD and OS/2, perhaps others.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9494 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9495 pthread_mutex_init (&(eve->mutex), NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9496 pthread_mutex_lock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9497 pthread_cond_init (&(eve->event), NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9498
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9499 pthread_mutex_unlock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9500 eve->alive = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9501 eve->posted = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9502
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9503 return eve;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9504 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9505
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9506 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9507 * Resets a semaphore created by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9508 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9509 * eve: The handle to the event returned by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9510 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9511 int dw_event_reset (HEV eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9512 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9513 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: 983
diff changeset
9514 return DW_ERROR_NON_INIT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9515
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9516 pthread_mutex_lock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9517 pthread_cond_broadcast (&(eve->event));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9518 pthread_cond_init (&(eve->event), NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9519 eve->posted = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9520 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: 983
diff changeset
9521 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9522 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9523
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9524 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9525 * Posts a semaphore created by dw_event_new(). Causing all threads
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9526 * waiting on this event in dw_event_wait to continue.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9527 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9528 * eve: The handle to the event returned by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9529 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9530 int dw_event_post (HEV eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9531 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9532 if(!eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9533 return FALSE;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9534
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9535 pthread_mutex_lock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9536 pthread_cond_broadcast (&(eve->event));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9537 eve->posted = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9538 pthread_mutex_unlock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9539 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9540 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9541
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9542 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9543 * Waits on a semaphore created by dw_event_new(), until the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9544 * event gets posted or until the timeout expires.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9545 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9546 * eve: The handle to the event returned by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9547 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9548 int dw_event_wait(HEV eve, unsigned long timeout)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9549 {
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
9550 int rc;
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
9551
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
9552 if(!eve)
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
9553 return DW_ERROR_NON_INIT;
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
9554
1202
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
9555 pthread_mutex_lock (&(eve->mutex));
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
9556
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
9557 if(eve->posted)
1202
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
9558 {
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
9559 pthread_mutex_unlock (&(eve->mutex));
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
9560 return DW_ERROR_NONE;
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
9561 }
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
9562
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
9563 if(timeout != -1)
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
9564 {
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
9565 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
9566 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
9567
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
9568 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
9569 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
9570 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
9571 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
9572 }
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
9573 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
9574 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
9575 pthread_mutex_unlock (&(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
9576 if(!rc)
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
9577 return DW_ERROR_NONE;
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
9578 if(rc == ETIMEDOUT)
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
9579 return DW_ERROR_TIMEOUT;
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
9580 return DW_ERROR_GENERAL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9581 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9582
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9583 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9584 * Closes a semaphore created by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9585 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9586 * eve: The handle to the event returned by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9587 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9588 int dw_event_close(HEV *eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9589 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9590 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: 983
diff changeset
9591 return DW_ERROR_NON_INIT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9592
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9593 pthread_mutex_lock (&((*eve)->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9594 pthread_cond_destroy (&((*eve)->event));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9595 pthread_mutex_unlock (&((*eve)->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9596 pthread_mutex_destroy (&((*eve)->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9597 free(*eve);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9598 *eve = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9599
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: 983
diff changeset
9600 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9601 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9602
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9603 struct _seminfo {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9604 int fd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9605 int waiting;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9606 };
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9607
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9608 static void _handle_sem(int *tmpsock)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9609 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9610 fd_set rd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9611 struct _seminfo *array = (struct _seminfo *)malloc(sizeof(struct _seminfo));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9612 int listenfd = tmpsock[0];
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9613 int bytesread, connectcount = 1, maxfd, z, posted = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9614 char command;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9615 sigset_t mask;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9616
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9617 sigfillset(&mask); /* Mask all allowed signals */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9618 pthread_sigmask(SIG_BLOCK, &mask, NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9619
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9620 /* problems */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9621 if(tmpsock[1] == -1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9622 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9623 free(array);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9624 return;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9625 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9626
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9627 array[0].fd = tmpsock[1];
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9628 array[0].waiting = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9629
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9630 /* Free the memory allocated in dw_named_event_new. */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9631 free(tmpsock);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9632
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9633 while(1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9634 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9635 FD_ZERO(&rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9636 FD_SET(listenfd, &rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9637
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9638 maxfd = listenfd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9639
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9640 /* Added any connections to the named event semaphore */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9641 for(z=0;z<connectcount;z++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9642 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9643 if(array[z].fd > maxfd)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9644 maxfd = array[z].fd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9645
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9646 FD_SET(array[z].fd, &rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9647 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9648
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9649 if(select(maxfd+1, &rd, NULL, NULL, NULL) == -1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9650 return;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9651
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9652 if(FD_ISSET(listenfd, &rd))
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9653 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9654 struct _seminfo *newarray;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9655 int newfd = accept(listenfd, 0, 0);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9656
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9657 if(newfd > -1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9658 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9659 /* Add new connections to the set */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9660 newarray = (struct _seminfo *)malloc(sizeof(struct _seminfo)*(connectcount+1));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9661 memcpy(newarray, array, sizeof(struct _seminfo)*(connectcount));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9662
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9663 newarray[connectcount].fd = newfd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9664 newarray[connectcount].waiting = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9665
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9666 connectcount++;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9667
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9668 /* Replace old array with new one */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9669 free(array);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9670 array = newarray;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9671 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9672 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9673
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9674 /* Handle any events posted to the semaphore */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9675 for(z=0;z<connectcount;z++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9676 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9677 if(FD_ISSET(array[z].fd, &rd))
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9678 {
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1102
diff changeset
9679 if((bytesread = (int)read(array[z].fd, &command, 1)) < 1)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9680 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9681 struct _seminfo *newarray;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9682
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9683 /* Remove this connection from the set */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9684 newarray = (struct _seminfo *)malloc(sizeof(struct _seminfo)*(connectcount-1));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9685 if(!z)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9686 memcpy(newarray, &array[1], sizeof(struct _seminfo)*(connectcount-1));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9687 else
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9688 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9689 memcpy(newarray, array, sizeof(struct _seminfo)*z);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9690 if(z!=(connectcount-1))
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9691 memcpy(&newarray[z], &array[z+1], sizeof(struct _seminfo)*(z-connectcount-1));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9692 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9693 connectcount--;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9694
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9695 /* Replace old array with new one */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9696 free(array);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9697 array = newarray;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9698 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9699 else if(bytesread == 1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9700 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9701 switch(command)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9702 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9703 case 0:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9704 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9705 /* Reset */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9706 posted = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9707 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9708 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9709 case 1:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9710 /* Post */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9711 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9712 int s;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9713 char tmp = (char)0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9714
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9715 posted = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9716
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9717 for(s=0;s<connectcount;s++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9718 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9719 /* The semaphore has been posted so
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9720 * we tell all the waiting threads to
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9721 * continue.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9722 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9723 if(array[s].waiting)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9724 write(array[s].fd, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9725 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9726 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9727 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9728 case 2:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9729 /* Wait */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9730 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9731 char tmp = (char)0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9732
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9733 array[z].waiting = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9734
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9735 /* If we are posted exit immeditately */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9736 if(posted)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9737 write(array[z].fd, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9738 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9739 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9740 case 3:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9741 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9742 /* Done Waiting */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9743 array[z].waiting = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9744 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9745 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9746 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9747 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9748 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9749 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9750 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9751 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9752
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9753 /* Using domain sockets on unix for IPC */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9754 /* Create a named event semaphore which can be
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9755 * opened from other processes.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9756 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9757 * eve: Pointer to an event handle to receive handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9758 * name: Name given to semaphore which can be opened
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9759 * by other processes.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9760 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9761 HEV dw_named_event_new(char *name)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9762 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9763 struct sockaddr_un un;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9764 int ev, *tmpsock = (int *)malloc(sizeof(int)*2);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9765 HEV eve;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9766 DWTID dwthread;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9767
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9768 if(!tmpsock)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9769 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9770
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9771 eve = (HEV)malloc(sizeof(struct _dw_unix_event));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9772
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9773 if(!eve)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9774 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9775 free(tmpsock);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9776 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9777 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9778
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9779 tmpsock[0] = socket(AF_UNIX, SOCK_STREAM, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9780 ev = socket(AF_UNIX, SOCK_STREAM, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9781 memset(&un, 0, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9782 un.sun_family=AF_UNIX;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9783 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9784 strcpy(un.sun_path, "/tmp/.dw/");
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9785 strcat(un.sun_path, name);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9786
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9787 /* just to be safe, this should be changed
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9788 * to support multiple instances.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9789 */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9790 remove(un.sun_path);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9791
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9792 bind(tmpsock[0], (struct sockaddr *)&un, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9793 listen(tmpsock[0], 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9794 connect(ev, (struct sockaddr *)&un, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9795 tmpsock[1] = accept(tmpsock[0], 0, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9796
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9797 if(tmpsock[0] < 0 || tmpsock[1] < 0 || ev < 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9798 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9799 if(tmpsock[0] > -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9800 close(tmpsock[0]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9801 if(tmpsock[1] > -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9802 close(tmpsock[1]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9803 if(ev > -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9804 close(ev);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9805 free(tmpsock);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9806 free(eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9807 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9808 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9809
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9810 /* Create a thread to handle this event semaphore */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9811 pthread_create(&dwthread, NULL, (void *)_handle_sem, (void *)tmpsock);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9812 eve->alive = ev;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9813 return eve;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9814 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9815
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9816 /* Open an already existing named event semaphore.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9817 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9818 * eve: Pointer to an event handle to receive handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9819 * name: Name given to semaphore which can be opened
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9820 * by other processes.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9821 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9822 HEV dw_named_event_get(char *name)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9823 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9824 struct sockaddr_un un;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9825 HEV eve;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9826 int ev = socket(AF_UNIX, SOCK_STREAM, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9827 if(ev < 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9828 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9829
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9830 eve = (HEV)malloc(sizeof(struct _dw_unix_event));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9831
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9832 if(!eve)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9833 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9834 close(ev);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9835 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9836 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9837
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9838 un.sun_family=AF_UNIX;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9839 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9840 strcpy(un.sun_path, "/tmp/.dw/");
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9841 strcat(un.sun_path, name);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9842 connect(ev, (struct sockaddr *)&un, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9843 eve->alive = ev;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9844 return eve;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9845 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9846
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9847 /* Resets the event semaphore so threads who call wait
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9848 * on this semaphore will block.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9849 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9850 * eve: Handle to the semaphore obtained by
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9851 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9852 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9853 int dw_named_event_reset(HEV eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9854 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9855 /* signal reset */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9856 char tmp = (char)0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9857
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9858 if(!eve || eve->alive < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9859 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9860
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9861 if(write(eve->alive, &tmp, 1) == 1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9862 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9863 return 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9864 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9865
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9866 /* Sets the posted state of an event semaphore, any threads
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9867 * waiting on the semaphore will no longer block.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9868 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9869 * eve: Handle to the semaphore obtained by
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9870 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9871 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9872 int dw_named_event_post(HEV eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9873 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9874
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9875 /* signal post */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9876 char tmp = (char)1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9877
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9878 if(!eve || eve->alive < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9879 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9880
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9881 if(write(eve->alive, &tmp, 1) == 1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9882 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9883 return 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9884 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9885
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9886 /* Waits on the specified semaphore until it becomes
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9887 * posted, or returns immediately if it already is posted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9888 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9889 * eve: Handle to the semaphore obtained by
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9890 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9891 * timeout: Number of milliseconds before timing out
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9892 * or -1 if indefinite.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9893 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9894 int dw_named_event_wait(HEV eve, unsigned long timeout)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9895 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9896 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
9897 struct timeval tv, *useme = NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9898 int retval = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9899 char tmp;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9900
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9901 if(!eve || eve->alive < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9902 return DW_ERROR_NON_INIT;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9903
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9904 /* 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
9905 if(timeout != -1)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9906 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9907 tv.tv_sec = timeout / 1000;
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1102
diff changeset
9908 tv.tv_usec = (int)timeout % 1000;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9909
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9910 useme = &tv;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9911 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9912
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9913 FD_ZERO(&rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9914 FD_SET(eve->alive, &rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9915
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9916 /* Signal wait */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9917 tmp = (char)2;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9918 write(eve->alive, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9919
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9920 retval = select(eve->alive+1, &rd, NULL, NULL, useme);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9921
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9922 /* Signal done waiting. */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9923 tmp = (char)3;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9924 write(eve->alive, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9925
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9926 if(retval == 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9927 return DW_ERROR_TIMEOUT;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9928 else if(retval == -1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9929 return DW_ERROR_INTERRUPT;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9930
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9931 /* Clear the entry from the pipe so
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9932 * we don't loop endlessly. :)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9933 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9934 read(eve->alive, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9935 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9936 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9937
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9938 /* Release this semaphore, if there are no more open
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9939 * handles on this semaphore the semaphore will be destroyed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9940 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9941 * eve: Handle to the semaphore obtained by
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9942 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9943 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9944 int dw_named_event_close(HEV eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9945 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9946 /* Finally close the domain socket,
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9947 * cleanup will continue in _handle_sem.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9948 */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9949 if(eve)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9950 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9951 close(eve->alive);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9952 free(eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9953 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9954 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9955 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9956
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
9957 /* Mac specific function to cause garbage collection */
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
9958 void _dw_pool_drain(void)
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
9959 {
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
9960 #if !defined(GARBAGE_COLLECT)
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
9961 NSAutoreleasePool *pool = pthread_getspecific(_dw_pool_key);
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
9962 [pool drain];
698
e19f69a78f21 Fix for pool being removed and not just drained.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
9963 pool = [[NSAutoreleasePool alloc] init];
e19f69a78f21 Fix for pool being removed and not just drained.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
9964 pthread_setspecific(_dw_pool_key, pool);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9965 #endif
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
9966 }
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
9967
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
9968 /*
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
9969 * Setup thread independent pools.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9970 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9971 void _dwthreadstart(void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9972 {
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9973 void (*threadfunc)(void *) = NULL;
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9974 void **tmp = (void **)data;
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9975 NSColor *color;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
9976
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
9977 /* If we aren't using garbage collection we need autorelease pools */
660
2784e7ee8bcb Fixes for pixmaps and drawing to the screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 659
diff changeset
9978 #if !defined(GARBAGE_COLLECT)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9979 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
9980 pthread_setspecific(_dw_pool_key, pool);
660
2784e7ee8bcb Fixes for pixmaps and drawing to the screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 659
diff changeset
9981 #endif
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9982 _init_colors();
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9983
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9984 threadfunc = (void (*)(void *))tmp[0];
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9985
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9986 /* Start our thread function */
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9987 threadfunc(tmp[1]);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
9988
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
9989 /* Release the pool when we are done so we don't leak */
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9990 color = pthread_getspecific(_dw_fg_color_key);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9991 [color release];
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9992 color = pthread_getspecific(_dw_bg_color_key);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9993 [color release];
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
9994 #if !defined(GARBAGE_COLLECT)
698
e19f69a78f21 Fix for pool being removed and not just drained.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
9995 pool = pthread_getspecific(_dw_pool_key);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9996 [pool drain];
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
9997 #endif
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
9998 free(tmp);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9999 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10000
1075
3d117071a50b Renamed Mac _dw_default_font() to dw_font_set_default() and added it on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1074
diff changeset
10001 /*
3d117071a50b Renamed Mac _dw_default_font() to dw_font_set_default() and added it on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1074
diff changeset
10002 * Sets the default font used on text based widgets.
3d117071a50b Renamed Mac _dw_default_font() to dw_font_set_default() and added it on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1074
diff changeset
10003 * Parameters:
3d117071a50b Renamed Mac _dw_default_font() to dw_font_set_default() and added it on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1074
diff changeset
10004 * fontname: Font name in Dynamic Windows format.
3d117071a50b Renamed Mac _dw_default_font() to dw_font_set_default() and added it on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1074
diff changeset
10005 */
3d117071a50b Renamed Mac _dw_default_font() to dw_font_set_default() and added it on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1074
diff changeset
10006 void API dw_font_set_default(char *fontname)
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
10007 {
1241
459426f31fb4 Slight thread safety fix on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1239
diff changeset
10008 NSFont *oldfont = DWDefaultFont;
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
10009 DWDefaultFont = _dw_font_by_name(fontname);
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
10010 [DWDefaultFont retain];
1241
459426f31fb4 Slight thread safety fix on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1239
diff changeset
10011 [oldfont release];
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
10012 }
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
10013
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10014 /*
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10015 * Initializes the Dynamic Windows engine.
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10016 * Parameters:
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10017 * newthread: True if this is the only thread.
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10018 * False if there is already a message loop running.
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10019 */
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10020 int API dw_init(int newthread, int argc, char *argv[])
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10021 {
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10022 /* Correct the startup path if run from a bundle */
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10023 if(argc > 0 && argv[0])
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10024 {
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10025 char *pathcopy = strdup(argv[0]);
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10026 char *app = strstr(pathcopy, ".app/");
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
10027
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10028 if(app)
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10029 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10030 char pathbuf[PATH_MAX+1] = { 0 };
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10031 size_t len = (size_t)(app - pathcopy);
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10032
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10033 if(len > 0)
1385
fc20ad815428 Don't need to include the / after the .app on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1384
diff changeset
10034 strncpy(_dw_bundle_path, pathcopy, len + 4);
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10035 *app = 0;
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
10036
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10037 getcwd(pathbuf, PATH_MAX);
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
10038
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10039 /* If run from a bundle the path seems to be / */
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10040 if(strcmp(pathbuf, "/") == 0)
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10041 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10042 char *pos = strrchr(pathcopy, '/');
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10043
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10044 if(pos)
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10045 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10046 strncpy(pathbuf, pathcopy, (size_t)(pos - pathcopy));
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10047 chdir(pathbuf);
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10048 }
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10049 }
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
10050 }
1383
ead81c3d9e4e Thought I was fixing a memory leak but I was seeing the {} wrong.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1381
diff changeset
10051 if(pathcopy)
ead81c3d9e4e Thought I was fixing a memory leak but I was seeing the {} wrong.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1381
diff changeset
10052 free(pathcopy);
ead81c3d9e4e Thought I was fixing a memory leak but I was seeing the {} wrong.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1381
diff changeset
10053 }
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10054
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10055 /* Just in case we can't obtain a path */
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10056 if(!_dw_bundle_path[0])
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10057 getcwd(_dw_bundle_path, PATH_MAX);
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10058
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
10059 /* Get the operating system version */
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
10060 Gestalt(gestaltSystemVersionMajor, &DWOSMajor);
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
10061 Gestalt(gestaltSystemVersionMinor, &DWOSMinor);
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
10062 Gestalt(gestaltSystemVersionBugFix, &DWOSBuild);
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10063 /* Create the application object */
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10064 DWApp = [NSApplication sharedApplication];
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10065 /* Create object for handling timers */
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10066 DWHandler = [[DWTimerHandler alloc] init];
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10067 /* If we aren't using garbage collection we need autorelease pools */
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10068 #if !defined(GARBAGE_COLLECT)
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10069 pthread_key_create(&_dw_pool_key, NULL);
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10070 pool = [[NSAutoreleasePool alloc] init];
726
ecf47778caff Possible fix for container string columns not showing correctly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 725
diff changeset
10071 pthread_setspecific(_dw_pool_key, pool);
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10072 #endif
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
10073 pthread_key_create(&_dw_fg_color_key, NULL);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
10074 pthread_key_create(&_dw_bg_color_key, NULL);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
10075 _init_colors();
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10076 /* Create a default main menu, with just the application menu */
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10077 DWMainMenu = _generate_main_menu();
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10078 [DWMainMenu retain];
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10079 [DWApp setMainMenu:DWMainMenu];
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10080 DWObj = [[DWObject alloc] init];
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
10081 DWDefaultFont = nil;
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10082 /* Create mutexes for thread safety */
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10083 DWRunMutex = dw_mutex_new();
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10084 DWThreadMutex = dw_mutex_new();
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10085 DWThreadMutex2 = dw_mutex_new();
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10086 /* Use NSThread to start a dummy thread to initialize the threading subsystem */
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10087 NSThread *thread = [[ NSThread alloc] initWithTarget:DWObj selector:@selector(uselessThread:) object:nil];
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10088 [thread start];
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10089 [thread release];
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
10090 [NSTextField setCellClass:[DWTextFieldCell class]];
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
10091 return 0;
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10092 }
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10093
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10094 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10095 * Allocates a shared memory region with a name.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10096 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10097 * handle: A pointer to receive a SHM identifier.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10098 * dest: A pointer to a pointer to receive the memory address.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10099 * size: Size in bytes of the shared memory region to allocate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10100 * name: A string pointer to a unique memory name.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10101 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10102 HSHM dw_named_memory_new(void **dest, int size, char *name)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10103 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
10104 char namebuf[1025] = {0};
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10105 struct _dw_unix_shm *handle = malloc(sizeof(struct _dw_unix_shm));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10106
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10107 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: 1303
diff changeset
10108 snprintf(namebuf, 1024, "/tmp/.dw/%s", name);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10109
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10110 if((handle->fd = open(namebuf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10111 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10112 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10113 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10114 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10115
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10116 ftruncate(handle->fd, size);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10117
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10118 /* attach the shared memory segment to our process's address space. */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10119 *dest = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10120
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10121 if(*dest == MAP_FAILED)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10122 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10123 close(handle->fd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10124 *dest = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10125 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10126 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10127 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10128
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10129 handle->size = size;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10130 handle->sid = getsid(0);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10131 handle->path = strdup(namebuf);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10132
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10133 return handle;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10134 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10135
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10136 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10137 * Aquires shared memory region with a name.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10138 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10139 * dest: A pointer to a pointer to receive the memory address.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10140 * size: Size in bytes of the shared memory region to requested.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10141 * name: A string pointer to a unique memory name.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10142 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10143 HSHM dw_named_memory_get(void **dest, int size, char *name)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10144 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
10145 char namebuf[1025];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10146 struct _dw_unix_shm *handle = malloc(sizeof(struct _dw_unix_shm));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10147
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10148 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: 1303
diff changeset
10149 snprintf(namebuf, 1024, "/tmp/.dw/%s", name);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10150
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10151 if((handle->fd = open(namebuf, O_RDWR)) < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10152 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10153 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10154 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10155 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10156
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10157 /* attach the shared memory segment to our process's address space. */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10158 *dest = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10159
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10160 if(*dest == MAP_FAILED)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10161 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10162 close(handle->fd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10163 *dest = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10164 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10165 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10166 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10167
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10168 handle->size = size;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10169 handle->sid = -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10170 handle->path = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10171
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10172 return handle;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10173 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10174
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10175 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10176 * Frees a shared memory region previously allocated.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10177 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10178 * handle: Handle obtained from DB_named_memory_allocate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10179 * ptr: The memory address aquired with DB_named_memory_allocate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10180 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10181 int dw_named_memory_free(HSHM handle, void *ptr)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10182 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10183 struct _dw_unix_shm *h = handle;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10184 int rc = munmap(ptr, h->size);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10185
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10186 close(h->fd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10187 if(h->path)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10188 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10189 /* Only remove the actual file if we are the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10190 * creator of the file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10191 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10192 if(h->sid != -1 && h->sid == getsid(0))
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10193 remove(h->path);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10194 free(h->path);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10195 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10196 return rc;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10197 }
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10198
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10199 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10200 * Creates a new thread with a starting point of func.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10201 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10202 * func: Function which will be run in the new thread.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10203 * data: Parameter(s) passed to the function.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10204 * stack: Stack size of new thread (OS/2 and Windows only).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10205 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10206 DWTID dw_thread_new(void *func, void *data, int stack)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10207 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10208 DWTID thread;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10209 void **tmp = malloc(sizeof(void *) * 2);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10210 int rc;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10211
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10212 tmp[0] = func;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10213 tmp[1] = data;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10214
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10215 rc = pthread_create(&thread, NULL, (void *)_dwthreadstart, (void *)tmp);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10216 if(rc == 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10217 return thread;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10218 return (DWTID)-1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10219 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10220
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10221 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10222 * Ends execution of current thread immediately.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10223 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10224 void dw_thread_end(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10225 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10226 pthread_exit(NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10227 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10228
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10229 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10230 * Returns the current thread's ID.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10231 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10232 DWTID dw_thread_id(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10233 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10234 return (DWTID)pthread_self();
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10235 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10236
661
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10237 /*
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10238 * Execute and external program in a seperate session.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10239 * Parameters:
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10240 * program: Program name with optional path.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10241 * type: Either DW_EXEC_CON or DW_EXEC_GUI.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10242 * params: An array of pointers to string arguements.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10243 * Returns:
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10244 * -1 on error.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10245 */
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10246 int dw_exec(char *program, int type, char **params)
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10247 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10248 int ret = -1;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10249
738
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10250 if(type == DW_EXEC_GUI)
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10251 {
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10252 if(params && params[0] && params[1])
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10253 {
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10254 [[NSWorkspace sharedWorkspace] openFile:[NSString stringWithUTF8String:params[1]]
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10255 withApplication:[NSString stringWithUTF8String:program]];
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10256 }
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10257 else
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10258 {
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10259 [[NSWorkspace sharedWorkspace] launchApplication:[NSString stringWithUTF8String:program]];
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10260 }
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10261 return 0;
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10262 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10263
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10264 if((ret = fork()) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10265 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10266 int i;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10267
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10268 for (i = 3; i < 256; i++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10269 close(i);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10270 setsid();
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10271
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10272 if(type == DW_EXEC_CON)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10273 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10274 char **tmpargs;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10275
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10276 if(!params)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10277 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10278 tmpargs = malloc(sizeof(char *));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10279 tmpargs[0] = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10280 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10281 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10282 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10283 int z = 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10284
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10285 while(params[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10286 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10287 z++;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10288 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10289 tmpargs = malloc(sizeof(char *)*(z+3));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10290 z=0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10291 tmpargs[0] = "xterm";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10292 tmpargs[1] = "-e";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10293 while(params[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10294 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10295 tmpargs[z+2] = params[z];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10296 z++;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10297 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10298 tmpargs[z+2] = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10299 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10300 execvp("xterm", tmpargs);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10301 free(tmpargs);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10302 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10303 /* If we got here exec failed */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10304 _exit(-1);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10305 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10306 return ret;
661
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10307 }
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10308
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10309 /*
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10310 * Loads a web browser pointed at the given URL.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10311 * Parameters:
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10312 * url: Uniform resource locator.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10313 */
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10314 int dw_browse(char *url)
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10315 {
715
5f8102bd7646 dw_browse() reimplmented so it actually works as expected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 714
diff changeset
10316 NSURL *myurl = [NSURL URLWithString:[NSString stringWithUTF8String:url]];
5f8102bd7646 dw_browse() reimplmented so it actually works as expected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 714
diff changeset
10317 [[NSWorkspace sharedWorkspace] openURL:myurl];
1115
03cd2f3e929d Fixed a documentation and template error regarding dw_browse() return code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1110
diff changeset
10318 return DW_ERROR_NONE;
03cd2f3e929d Fixed a documentation and template error regarding dw_browse() return code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1110
diff changeset
10319 }
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10320
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10321 typedef struct _dwprint
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10322 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10323 NSPrintInfo *pi;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10324 int (*drawfunc)(HPRINT, HPIXMAP, int, void *);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10325 void *drawdata;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10326 unsigned long flags;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10327 } DWPrint;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10328
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10329 /*
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10330 * Creates a new print object.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10331 * Parameters:
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
10332 * jobname: Name of the print job to show in the queue.
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10333 * flags: Flags to initially configure the print object.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10334 * pages: Number of pages to print.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10335 * drawfunc: The pointer to the function to be used as the callback.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10336 * drawdata: User data to be passed to the handler function.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10337 * Returns:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10338 * A handle to the print object or NULL on failure.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10339 */
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
10340 HPRINT API dw_print_new(char *jobname, unsigned long flags, unsigned int pages, void *drawfunc, void *drawdata)
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10341 {
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10342 DWPrint *print;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10343 NSPrintPanel *panel;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10344 PMPrintSettings settings;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10345 NSPrintInfo *pi;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10346
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10347 if(!drawfunc || !(print = calloc(1, sizeof(DWPrint))))
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10348 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10349 return NULL;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10350 }
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10351
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
10352 if(!jobname)
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
10353 jobname = "Dynamic Windows Print Job";
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
10354
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10355 print->drawfunc = drawfunc;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10356 print->drawdata = drawdata;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10357 print->flags = flags;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10358
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10359 /* Get the page range */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10360 pi = [NSPrintInfo sharedPrintInfo];
1237
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
10361 [pi setHorizontalPagination:NSFitPagination];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
10362 [pi setHorizontallyCentered:YES];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
10363 [pi setVerticalPagination:NSFitPagination];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
10364 [pi setVerticallyCentered:YES];
1239
7ec60b650e5b Printer info should default to Portrait not Landscape on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1237
diff changeset
10365 [pi setOrientation:NSPortraitOrientation];
1237
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
10366 [pi setLeftMargin:0.0];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
10367 [pi setRightMargin:0.0];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
10368 [pi setTopMargin:0.0];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
10369 [pi setBottomMargin:0.0];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
10370
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10371 settings = [pi PMPrintSettings];
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10372 PMSetPageRange(settings, 1, pages);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10373 PMSetFirstPage(settings, 1, true);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10374 PMSetLastPage(settings, pages, true);
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
10375 PMPrintSettingsSetJobName(settings, (CFStringRef)[NSString stringWithUTF8String:jobname]);
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10376 [pi updateFromPMPrintSettings];
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10377
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10378 /* Create and show the print panel */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10379 panel = [NSPrintPanel printPanel];
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10380 if(!panel || [panel runModalWithPrintInfo:pi] == NSCancelButton)
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10381 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10382 free(print);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10383 return NULL;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10384 }
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10385 /* Put the print info from the panel into the operation */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10386 print->pi = pi;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10387
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10388 return print;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10389 }
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10390
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10391 /*
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10392 * Runs the print job, causing the draw page callbacks to fire.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10393 * Parameters:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10394 * print: Handle to the print object returned by dw_print_new().
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10395 * flags: Flags to run the print job.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10396 * Returns:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10397 * DW_ERROR_UNKNOWN on error or DW_ERROR_NONE on success.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10398 */
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10399 int API dw_print_run(HPRINT print, unsigned long flags)
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10400 {
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10401 DWPrint *p = print;
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
10402 NSBitmapImageRep *rep, *rep2;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10403 NSPrintInfo *pi;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10404 NSPrintOperation *po;
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
10405 HPIXMAP pixmap, pixmap2;
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
10406 NSImage *image, *flipped;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10407 NSImageView *iv;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10408 NSSize size;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10409 PMPrintSettings settings;
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
10410 int x, result = DW_ERROR_UNKNOWN;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10411 UInt32 start, end;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10412
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10413 if(!p)
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
10414 return result;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10415
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10416 /* Figure out the printer/paper size */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10417 pi = p->pi;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10418 size = [pi paperSize];
1234
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10419
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10420 /* Get the page range */
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10421 settings = [pi PMPrintSettings];
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10422 PMGetFirstPage(settings, &start);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10423 if(start > 0)
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10424 start--;
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10425 PMGetLastPage(settings, &end);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10426 PMSetPageRange(settings, 1, 1);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10427 PMSetFirstPage(settings, 1, true);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10428 PMSetLastPage(settings, 1, true);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10429 [pi updateFromPMPrintSettings];
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
10430
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10431 /* Create an image view to print and a pixmap to draw into */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10432 iv = [[NSImageView alloc] init];
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
10433 pixmap = dw_pixmap_new(iv, (int)size.width, (int)size.height, 8);
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10434 rep = pixmap->image;
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
10435 pixmap2 = dw_pixmap_new(iv, (int)size.width, (int)size.height, 8);
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
10436 rep2 = pixmap2->image;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10437
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10438 /* Create an image with the data from the pixmap
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10439 * to go into the image view.
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10440 */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10441 image = [[NSImage alloc] initWithSize:[rep size]];
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
10442 flipped = [[NSImage alloc] initWithSize:[rep size]];
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10443 [image addRepresentation:rep];
1176
408ea33b19cf Ok fixed a problem with the last commit using the wrong representation on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1175
diff changeset
10444 [flipped addRepresentation:rep2];
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
10445 [iv setImage:flipped];
1144
5878dbfafbe2 Need to size the NSImageView to print it apparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1143
diff changeset
10446 [iv setImageScaling:NSScaleProportionally];
5878dbfafbe2 Need to size the NSImageView to print it apparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1143
diff changeset
10447 [iv setFrameOrigin:NSMakePoint(0,0)];
5878dbfafbe2 Need to size the NSImageView to print it apparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1143
diff changeset
10448 [iv setFrameSize:size];
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10449
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10450 /* Create the print operation using the image view and
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10451 * print info obtained from the panel in the last call.
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10452 */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10453 po = [NSPrintOperation printOperationWithView:iv printInfo:pi];
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10454 [po setShowsPrintPanel:NO];
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10455
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10456 /* Cycle through each page */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10457 for(x=start; x<end && p->drawfunc; x++)
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10458 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10459 /* Call the application's draw function */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10460 p->drawfunc(print, pixmap, x, p->drawdata);
1340
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10461 if(p->drawfunc)
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10462 {
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10463 /* Internal representation is flipped... so flip again so we can print */
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10464 _flip_image(image, rep2, size);
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10465 #ifdef DEBUG_PRINT
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10466 /* Save it to file to see what we have */
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10467 NSData *data = [rep2 representationUsingType: NSPNGFileType properties: nil];
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10468 [data writeToFile: @"print.png" atomically: NO];
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10469 #endif
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10470 /* Print the image view */
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10471 [po runOperation];
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10472 /* Fill the pixmap with white in case we are printing more pages */
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10473 dw_color_foreground_set(DW_CLR_WHITE);
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10474 dw_draw_rect(0, pixmap, TRUE, 0, 0, (int)size.width, (int)size.height);
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
10475 }
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10476 }
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
10477 if(p->drawfunc)
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
10478 result = DW_ERROR_NONE;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10479 /* Free memory */
1144
5878dbfafbe2 Need to size the NSImageView to print it apparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1143
diff changeset
10480 [image release];
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
10481 [flipped release];
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10482 dw_pixmap_destroy(pixmap);
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
10483 dw_pixmap_destroy(pixmap2);
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10484 free(p);
1144
5878dbfafbe2 Need to size the NSImageView to print it apparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1143
diff changeset
10485 [iv release];
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
10486 return result;
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10487 }
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10488
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10489 /*
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10490 * Cancels the print job, typically called from a draw page callback.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10491 * Parameters:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10492 * print: Handle to the print object returned by dw_print_new().
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10493 */
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10494 void API dw_print_cancel(HPRINT print)
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
10495 {
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10496 DWPrint *p = print;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10497
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10498 if(p)
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10499 p->drawfunc = NULL;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10500 }
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
10501