annotate mac/dw.m @ 1849:b5e1ccc76e58

Added code to set the foreground color on Mac buttons... background color cannot be set, it is image based. Also added defaultly disabled color test code to the testing application.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 01 Jan 2013 23:18:56 +0000
parents 68f923e57542
children 4790589f52a9
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 *
1774
4cc999e757a3 Check for pointerArrayWithWeakObjects before weakObjectsPointerArray on Mac
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1773
diff changeset
8 * Requires 10.5 or later.
942
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 */
1740
2d44ca344863 Test fix for warnings generated in Xcode 4.3... hopefully this still allows 10.5 builds to work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1719
diff changeset
23 #if defined(MAC_OS_X_VERSION_10_6) && ((defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6) || !defined(MAC_OS_X_VERSION_MAX_ALLOWED))
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
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
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
44 /* Macros to handle local auto-release pools */
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
45 #define DW_LOCAL_POOL_IN NSAutoreleasePool *localpool = nil; \
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
46 if(DWThread != (DWTID)-1 && pthread_self() != DWThread) \
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
47 localpool = [[NSAutoreleasePool alloc] init];
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
48 #define DW_LOCAL_POOL_OUT if(localpool) [localpool drain];
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
49
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
50 unsigned long _colors[] =
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
51 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
52 0x00000000, /* 0 black */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
53 0x000000bb, /* 1 red */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
54 0x0000bb00, /* 2 green */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
55 0x0000aaaa, /* 3 yellow */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
56 0x00cc0000, /* 4 blue */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
57 0x00bb00bb, /* 5 magenta */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
58 0x00bbbb00, /* 6 cyan */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
59 0x00bbbbbb, /* 7 white */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
60 0x00777777, /* 8 grey */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
61 0x000000ff, /* 9 bright red */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
62 0x0000ff00, /* 10 bright green */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
63 0x0000eeee, /* 11 bright yellow */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
64 0x00ff0000, /* 12 bright blue */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
65 0x00ff00ff, /* 13 bright magenta */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
66 0x00eeee00, /* 14 bright cyan */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
67 0x00ffffff, /* 15 bright white */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
68 0xff000000 /* 16 default color */
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
69 };
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
70
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
71 /*
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
72 * 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
73 */
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
74 #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
75 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
76 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
77 ".png",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
78 ".ico",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
79 ".icns",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
80 ".gif",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
81 ".jpg",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
82 ".jpeg",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
83 ".tiff",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
84 ".bmp"
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
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
87 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
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 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
90 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
91
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
92 /* 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
93 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
94 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
95 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
96 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
97 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
98 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
99 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
100 break;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
101 }
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 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
104 {
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
105 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
106 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
107 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
108 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
109
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
110 unsigned long _get_color(unsigned long thiscolor)
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
111 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
112 if(thiscolor & DW_RGB_COLOR)
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 thiscolor & ~DW_RGB_COLOR;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
115 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
116 else if(thiscolor < 17)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
117 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
118 return _colors[thiscolor];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
119 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
120 return 0;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
121 }
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
122
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
123 /* 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
124 #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
125 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
126 #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
127 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
128 pthread_key_t _dw_bg_color_key;
1770
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
129 int 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
130 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
131
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
132 /* 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
133 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
134 {
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
135 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
136
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
137 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
138 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
139 }
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
140
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
141 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
142 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
143 struct _sighandler *next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
144 ULONG message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
145 HWND window;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
146 int id;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
147 void *signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
148 void *data;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
149
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
150 } SignalHandler;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
151
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
152 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
153
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
154 /* Some internal prototypes */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
155 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
156 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
157 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
158 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
159
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
160 /* 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
161 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
162 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
163 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
164 id redraw = lastwindow;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
165
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
166 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
167 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
168
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
169 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
170 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
171 {
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
172 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
173 }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
174 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
175
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
176 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
177 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
178 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
179
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
180 /* Find any callbacks for this function */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
181 while(tmp)
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 if(tmp->message == messageid && window == tmp->window)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
184 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
185 return tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
186 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
187 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
188 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
189 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
190 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
191
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
192 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
193 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
194 ULONG message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
195 char name[30];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
196
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
197 } SignalList;
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
198
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
199 /* 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
200 #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
201
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
202 SignalList SignalTranslate[SIGNALMAX] = {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
203 { 1, DW_SIGNAL_CONFIGURE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
204 { 2, DW_SIGNAL_KEY_PRESS },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
205 { 3, DW_SIGNAL_BUTTON_PRESS },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
206 { 4, DW_SIGNAL_BUTTON_RELEASE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
207 { 5, DW_SIGNAL_MOTION_NOTIFY },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
208 { 6, DW_SIGNAL_DELETE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
209 { 7, DW_SIGNAL_EXPOSE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
210 { 8, DW_SIGNAL_CLICKED },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
211 { 9, DW_SIGNAL_ITEM_ENTER },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
212 { 10, DW_SIGNAL_ITEM_CONTEXT },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
213 { 11, DW_SIGNAL_LIST_SELECT },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
214 { 12, DW_SIGNAL_ITEM_SELECT },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
215 { 13, DW_SIGNAL_SET_FOCUS },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
216 { 14, DW_SIGNAL_VALUE_CHANGED },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
217 { 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
218 { 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
219 { 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
220 };
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
221
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
222 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
223 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
224 SignalHandler *handler = _get_handler(object, message);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
225 /* 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
226
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
227 if(handler)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
228 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
229 switch(message)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
230 {
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
231 /* Timer event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
232 case 0:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
233 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
234 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
235
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
236 if(!timerfunc(handler->data))
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
237 dw_timer_disconnect(handler->id);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
238 return 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
239 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
240 /* Configure/Resize event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
241 case 1:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
242 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
243 int (*sizefunc)(HWND, int, int, void *) = handler->signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
244 NSSize size;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
245
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
246 if([object isKindOfClass:[NSWindow class]])
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
247 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
248 NSWindow *window = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
249 size = [[window contentView] frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
250 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
251 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
252 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
253 NSView *view = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
254 size = [view frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
255 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
256
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
257 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
258 {
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
259 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
260 }
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
261 return 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
262 }
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
263 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
264 {
1748
e4fcd1e81f0d Added optional utf8 parameter to keypress callback on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
265 int (*keypressfunc)(HWND, char, int, int, void *, char *) = handler->signalfunction;
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
266 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
267 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
268 unichar vk = [nchar characterAtIndex:0];
1748
e4fcd1e81f0d Added optional utf8 parameter to keypress callback on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
269 char *utf8 = NULL, ch = '\0';
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
270
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
271 /* 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
272 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
273 {
1748
e4fcd1e81f0d Added optional utf8 parameter to keypress callback on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
274 char *tmp = (char *)[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
275 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
276 {
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
277 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
278 }
1748
e4fcd1e81f0d Added optional utf8 parameter to keypress callback on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
279 utf8 = tmp;
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
280 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
281
1748
e4fcd1e81f0d Added optional utf8 parameter to keypress callback on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
282 return keypressfunc(handler->window, ch, (int)vk, special, handler->data, utf8);
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
283 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
284 /* Button press and release event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
285 case 3:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
286 case 4:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
287 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
288 int (* API buttonfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))handler->signalfunction;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
289 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
290 int button = 1;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
291
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
292 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
293 {
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
294 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
295 NSEventType type = [event type];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
296
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
297 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
298
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 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
300 {
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
301 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
302 }
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
303 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
304 {
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
305 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
306 }
1647
b2c26ed9031c On Mac set button to 2 (right) when Control key is pressed and left clicking
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1644
diff changeset
307 else if([event modifierFlags] & NSControlKeyMask)
b2c26ed9031c On Mac set button to 2 (right) when Control key is pressed and left clicking
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1644
diff changeset
308 {
b2c26ed9031c On Mac set button to 2 (right) when Control key is pressed and left clicking
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1644
diff changeset
309 button = 2;
b2c26ed9031c On Mac set button to 2 (right) when Control key is pressed and left clicking
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1644
diff changeset
310 }
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
311 }
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
312
954
cfb12bf3bb06 Fixes for some more coordinate system issues on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 953
diff changeset
313 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
314 }
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
315 /* 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
316 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
317 {
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 int (* API motionfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))handler->signalfunction;
945
254b50be1bc1 Coordinate system changes to button press and motion notify events on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 944
diff changeset
319 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
320 NSPoint p = [view convertPoint:[event locationInWindow] toView:object];
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
321 SEL spmb = NSSelectorFromString(@"pressedMouseButtons");
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
322 IMP ipmb = [[NSEvent class] respondsToSelector:spmb] ? [[NSEvent class] methodForSelector:spmb] : 0;
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
323 int buttonmask = ipmb ? (int)ipmb([NSEvent class], spmb) : (1 << [event buttonNumber]);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
324
954
cfb12bf3bb06 Fixes for some more coordinate system issues on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 953
diff changeset
325 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
326 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
327 /* Window close event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
328 case 6:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
329 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
330 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
331 return closefunc(object, handler->data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
332 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
333 /* Window expose/draw event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
334 case 7:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
335 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
336 DWExpose exp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
337 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
338 NSRect rect = [object frame];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
339
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
340 exp.x = rect.origin.x;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
341 exp.y = rect.origin.y;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
342 exp.width = rect.size.width;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
343 exp.height = rect.size.height;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
344 int result = exposefunc(object, &exp, handler->data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
345 [[object window] flushWindow];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
346 return result;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
347 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
348 /* Clicked event for buttons and menu items */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
349 case 8:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
350 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
351 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
352
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
353 return clickfunc(object, handler->data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
354 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
355 /* 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
356 case 9:
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
357 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
358 int (*containerselectfunc)(HWND, char *, void *) = handler->signalfunction;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
359
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
360 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
361 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
362 /* Container context menu event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
363 case 10:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
364 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
365 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
366 char *text = (char *)event;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
367 void *user = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
368 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
369
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
370 /* 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
371 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
372 {
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 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
374 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
375 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
376 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
377 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
378 {
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
379 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
380 }
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
381 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
382
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
383 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
384
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
385 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
386 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
387 /* 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
388 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
389 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
390 {
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
391 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
392 int selected = DW_POINTER_TO_INT(event);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
393
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
394 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
395 }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
396 /* Tree class selection event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
397 case 12:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
398 {
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
399 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
400 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
401 void *user = NULL;
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
402 id item = nil;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
403
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
404 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
405 {
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
406 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
407 NSString *nstr = [item objectAtIndex:1];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
408
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
409 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
410 {
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
411 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
412 }
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
413 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
414 {
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
415 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
416 }
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
417
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
418 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
419 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
420 {
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
421 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
422 }
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
423 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
424 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
425 {
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
426 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
427 }
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
428 return result;
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
429 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
430
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
431 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
432 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
433 /* 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
434 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
435 {
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
436 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
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 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
439 }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
440 /* 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
441 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
442 {
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
443 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
444 int pageid = DW_POINTER_TO_INT(event);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
445
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
446 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
447 }
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
448 case 16:
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
449 {
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
450 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
451
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
452 return treeexpandfunc(handler->window, (HTREEITEM)event, handler->data);
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
453 }
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
454 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
455 {
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
456 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
457 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
458
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
459 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
460 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
461 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
462 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
463 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
464 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
465
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
466 /* Sub function to handle redraws */
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
467 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
468 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
469 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
470 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
471 _dw_redraw(nil, FALSE);
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
472 return ret;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
473 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
474
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
475 /* Subclass for the Timer type */
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
476 @interface DWTimerHandler : NSObject { }
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
477 -(void)runTimer:(id)sender;
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
478 @end
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
479
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
480 @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
481 -(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
482 @end
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
483
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
484 NSApplication *DWApp;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
485 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
486 NSFont *DWDefaultFont;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
487 DWTimerHandler *DWHandler;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
488 #if !defined(GARBAGE_COLLECT)
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
489 NSAutoreleasePool *pool;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
490 #endif
661
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
491 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
492 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
493 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
494 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
495 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
496 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
497
1558
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
498 /* 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
499 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
500 {
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
501 [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
502 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
503 modifierFlags:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
504 timestamp:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
505 windowNumber:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
506 context:NULL
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
507 subtype:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
508 data1:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
509 data2:0]
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
510 atStart:NO];
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
511 }
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
512
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
513 /* 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
514 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
515 {
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
516 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
517 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
518 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
519 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
520 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
521 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
522 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
523 int ysrc;
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
524 int srcwidth;
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
525 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
526 } DWBitBlt;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
527
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
528 /* 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
529 @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
530 -(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
531 -(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
532 -(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
533 -(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
534 -(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
535 @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
536
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
537 @interface DWMenuItem : NSMenuItem
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
538 {
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
539 int check;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
540 }
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
541 -(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
542 -(int)check;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
543 -(void)dealloc;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
544 @end
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
545
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
546 @implementation DWObject
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
547 -(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
548 -(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
549 {
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
550 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
551 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
552 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
553 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
554 }
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
555 -(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
556 {
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
557 DWMenuItem *item = param;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
558 if([item check])
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
559 {
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
560 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
561 [item setState:NSOffState];
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
562 else
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
563 [item setState:NSOnState];
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
564 }
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
565 _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
566 }
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
567 -(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
568 {
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
569 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
570 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
571 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
572 id bltsrc = bltinfo->src;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
573
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
574 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
575 {
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
576 [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
577 [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
578 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
579 [[[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
580 }
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
581 else
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
582 {
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
583 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
584 {
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
585 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
586 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
587 }
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
588 _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
589 }
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
590 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
591 {
910
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
592 NSBitmapImageRep *rep = bltsrc;
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
593 NSImage *image = [NSImage alloc];
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
594 SEL siwc = NSSelectorFromString(@"initWithCGImage");
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
595
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
596 if([image respondsToSelector:siwc])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
597 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
598 IMP iiwc = [image methodForSelector:siwc];
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
599 image = iiwc(image, siwc, [rep CGImage], NSZeroSize);
910
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
600 }
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
601 else
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
602 {
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
603 image = [image initWithSize:[rep size]];
910
329f2ca62f1b Switched to using a different potentially slower NSImage conversion to support Leopard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 909
diff changeset
604 [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
605 }
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
606 if(bltinfo->srcwidth != -1)
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
607 {
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
608 [image drawInRect:NSMakeRect(bltinfo->xdest, bltinfo->ydest, bltinfo->width, bltinfo->height)
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
609 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
610 operation:NSCompositeSourceOver fraction:1.0];
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
611 }
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
612 else
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
613 {
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
614 [image drawAtPoint:NSMakePoint(bltinfo->xdest, bltinfo->ydest)
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
615 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
616 operation:NSCompositeSourceOver fraction:1.0];
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
617 }
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
618 [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
619 [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
620 }
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
621 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
622 {
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
623 [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
624 }
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
625 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
626 {
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
627 [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
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 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
630 }
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
631 -(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
632 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
633 if(_DWLastDrawable)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
634 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
635 id object = _DWLastDrawable;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
636 NSWindow *window = [object window];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
637 [window flushWindow];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
638 }
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
639 }
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
640 -(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
641 {
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 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
643 void **params = (void **)[v pointerValue];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
644 void (* windowfunc)(void *);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
645
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
646 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
647 {
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
648 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
649 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
650 {
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
651 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
652 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
653 }
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
654 }
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
655 @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
656
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
657 DWObject *DWObj;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
658
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
659 /* 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
660 * 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
661 * basically everything. Was hoping to add methods
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
662 * 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
663 * 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
664 * going to work. -Brian
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
665 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
666
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
667 /* Subclass for a box type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
668 @interface DWBox : NSView
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
669 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
670 Box *box;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
671 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
672 NSColor *bgcolor;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
673 }
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
674 -(id)init;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
675 -(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
676 -(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
677 -(id)contentView;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
678 -(void *)userdata;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
679 -(void)setUserdata:(void *)input;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
680 -(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
681 -(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
682 -(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
683 -(void)mouseUp:(NSEvent *)theEvent;
701
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
684 -(NSMenu *)menuForEvent:(NSEvent *)theEvent;
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
685 -(void)rightMouseUp:(NSEvent *)theEvent;
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
686 -(void)otherMouseDown:(NSEvent *)theEvent;
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
687 -(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
688 -(void)keyDown:(NSEvent *)theEvent;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
689 -(void)setColor:(unsigned long)input;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
690 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
691
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
692 @implementation DWBox
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
693 -(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
694 {
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
695 self = [super init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
696
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
697 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
698 {
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
699 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
700 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
701 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
702 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
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 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
705 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
706 -(void)dealloc
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
707 {
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
708 UserData *root = userdata;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
709 if(box->items)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
710 free(box->items);
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
711 free(box);
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
712 _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
713 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
714 [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
715 }
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
716 -(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
717 -(id)contentView { return self; }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
718 -(void *)userdata { return userdata; }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
719 -(void)setUserdata:(void *)input { userdata = input; }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
720 -(void)drawRect:(NSRect)rect
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
721 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
722 if(bgcolor)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
723 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
724 [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
725 NSRectFill([self bounds]);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
726 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
727 }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
728 -(BOOL)isFlipped { return YES; }
701
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
729 -(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
730 -(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
731 -(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
732 -(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
733 -(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
734 -(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
735 -(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
736 -(void)setColor:(unsigned long)input
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
737 {
755
f574028932cc Fix for crash when changing background colors, needed retain and release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 754
diff changeset
738 id orig = bgcolor;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
739
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
740 if(input == _colors[DW_CLR_DEFAULT])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
741 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
742 bgcolor = nil;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
743 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
744 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
745 {
755
f574028932cc Fix for crash when changing background colors, needed retain and release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 754
diff changeset
746 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
747 [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
748 NSRectFill([self bounds]);
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
749 }
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
750 [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
751 [orig release];
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
752 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
753 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
754
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
755 /* 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
756 @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
757 {
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
758 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
759 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
760 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
761 }
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
762 -(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
763 -(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
764 -(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
765 @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
766
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
767 @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
768 -(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
769 -(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
770 -(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
771 -(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
772 {
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 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
774
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
775 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
776 {
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
777 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
778 [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
779 }
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
780 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
781 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
782
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
783 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
784 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
785 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
786 }
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
787 -(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
788 @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
789
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 @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
791 {
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
792 int redraw;
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
793 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
794 }
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
795 -(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
796 -(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
797 -(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
798 -(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
799 -(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
800 -(int)shown;
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
801 -(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
802 @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
803
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
804 @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
805 -(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
806 {
1133
25bea6526ca1 Similar Mac fix to what I just commited on Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1130
diff changeset
807 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
808 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
809 {
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
810 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
811 }
1133
25bea6526ca1 Similar Mac fix to what I just commited on Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1130
diff changeset
812 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
813 [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
814 }
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
815 -(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
816 -(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
817 -(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
818 -(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
819 -(int)shown { return shown; }
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
820 -(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
821 @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
822
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 /* 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
824 @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
825 {
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 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
827 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
828 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
829 }
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 *)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
831 -(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
832 -(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
833 -(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
834 -(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
835 -(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
836 -(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
837 -(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
838 -(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
839 -(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
840 -(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
841 -(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
842 -(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
843 -(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
844 -(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
845 @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
846
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 @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
848 -(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
849 -(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
850 -(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
851 -(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
852 -(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
853 -(NSSize)size { return size; }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
854 -(void)mouseDown:(NSEvent *)theEvent
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
855 {
1652
202b1affc706 Fix taskbar/menubar event breakage from the recent Mac control key changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1650
diff changeset
856 if(![theEvent isMemberOfClass:[NSEvent class]] || !([theEvent modifierFlags] & NSControlKeyMask))
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
857 _event_handler(self, theEvent, 3);
1648
7a9b1189934a Another fix for Contol clicking on Mac... getting double events
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1647
diff changeset
858 }
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
859 -(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
860 -(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
861 -(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
862 -(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
863 -(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
864 -(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
865 -(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
866 -(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
867 -(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
868 -(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
869 -(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
870 @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
871
1843
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
872 /* Subclass for the application class */
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
873 @interface DWAppDel : NSObject
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
874 #ifdef BUILDING_FOR_SNOW_LEOPARD
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
875 <NSApplicationDelegate>
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
876 #endif
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
877 {
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
878 }
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
879 -(NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
880 @end
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
881
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
882 @implementation DWAppDel
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
883 -(NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
884 {
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
885 if(_event_handler(sender, nil, 6) > 0)
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
886 return NSTerminateCancel;
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
887 return NSTerminateNow;
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
888 }
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
889 @end
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
890
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
891 /* Subclass for a top-level window */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
892 @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
893 #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
894 <NSWindowDelegate>
d44bb4c4902d Fixed an error on the close event handler on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 853
diff changeset
895 #endif
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
896 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
897 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
898 NSSize oldsize;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
899 }
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
900 -(BOOL)windowShouldClose:(id)sender;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
901 -(void)setMenu:(NSMenu *)input;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
902 -(void)windowDidBecomeMain:(id)sender;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
903 -(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
904 -(void)mouseDragged:(NSEvent *)theEvent;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
905 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
906
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
907 @implementation DWView
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
908 -(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
909 {
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
910 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
911 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
912 return YES;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
913 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
914 - (void)viewDidMoveToWindow
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
915 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
916 [[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
917 [[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
918 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
919 - (void)dealloc
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
920 {
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
921 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
922 {
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
923 [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
924 }
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
925 [[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
926 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
927 [super dealloc];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
928 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
929 - (void)windowResized:(NSNotification *)notification;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
930 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
931 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
932
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
933 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
934 {
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
935 _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
936 _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
937 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
938 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
939 _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
940 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
941 }
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
942 -(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
943 {
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
944 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
945
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
946 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
947 {
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
948 _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
949 _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
950 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
951
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
952 }
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
953 -(void)windowDidBecomeMain:(id)sender
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
954 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
955 if(windowmenu)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
956 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
957 [DWApp setMainMenu:windowmenu];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
958 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
959 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
960 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
961 [DWApp setMainMenu:DWMainMenu];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
962 }
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
963 _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
964 }
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
965 -(void)setMenu:(NSMenu *)input { windowmenu = input; [windowmenu retain]; }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
966 -(void)menuHandler:(id)sender
1593
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
967 {
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
968 id menu = [sender menu];
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
969
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
970 /* Find the highest menu for this item */
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
971 while([menu supermenu])
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
972 {
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
973 menu = [menu supermenu];
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
974 }
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
975
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
976 /* Only perform the delay if this item is a child of the main menu */
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
977 if([DWApp mainMenu] == menu)
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
978 [DWObj performSelector:@selector(menuHandler:) withObject:sender afterDelay:0];
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
979 else
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
980 [DWObj menuHandler:sender];
1558
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
981 _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
982 }
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
983 -(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
984 -(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
985 {
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
986 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
987
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
988 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
989 {
abb9203adc05 Use NSCompositeSourceOver for bitblting that respects transparency of the source
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 951
diff changeset
990 _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
991 }
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
992 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
993 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
994
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
995 /* Subclass for a button type */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
996 @interface DWButton : NSButton
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
997 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
998 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
999 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
1000 DWBox *parent;
650
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 -(void *)userdata;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1003 -(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
1004 -(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
1005 -(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
1006 -(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
1007 -(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
1008 -(DWBox *)parent;
1849
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1009 -(NSColor *)textColor;
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1010 -(void)setTextColor:(NSColor *)textColor;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1011 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1012
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1013 @implementation DWButton
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1014 -(void *)userdata { return userdata; }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1015 -(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
1016 -(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
1017 {
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
1018 _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
1019 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
1020 {
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
1021 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
1022 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
1023 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
1024
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
1025 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
1026 {
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
1027 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
1028 {
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
1029 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
1030
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
1031 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
1032 {
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
1033 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
1034
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
1035 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
1036 {
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
1037 [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
1038 }
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
1039 }
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
1040 }
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
1041 }
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
1042 }
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
1043 }
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
1044 -(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
1045 -(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
1046 -(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
1047 -(DWBox *)parent { return parent; }
1849
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1048 -(NSColor *)textColor
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1049 {
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1050 NSAttributedString *attrTitle = [self attributedTitle];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1051 NSUInteger len = [attrTitle length];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1052 NSRange range = NSMakeRange(0, MIN(len, 1));
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1053 NSDictionary *attrs = [attrTitle fontAttributesInRange:range];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1054 NSColor *textColor = [NSColor controlTextColor];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1055 if (attrs) {
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1056 textColor = [attrs objectForKey:NSForegroundColorAttributeName];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1057 }
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1058 return textColor;
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1059 }
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1060 -(void)setTextColor:(NSColor *)textColor
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1061 {
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1062 NSMutableAttributedString *attrTitle = [[NSMutableAttributedString alloc]
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1063 initWithAttributedString:[self attributedTitle]];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1064 NSUInteger len = [attrTitle length];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1065 NSRange range = NSMakeRange(0, len);
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1066 [attrTitle addAttribute:NSForegroundColorAttributeName
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1067 value:textColor
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1068 range:range];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1069 [attrTitle fixAttributesInRange:range];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1070 [self setAttributedTitle:attrTitle];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1071 [attrTitle release];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1072 }
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1073 -(void)keyDown:(NSEvent *)theEvent
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1074 {
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1075 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1076 if(vk == VK_RETURN || vk == VK_SPACE)
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1077 {
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1078 if(buttonType == NSSwitchButton)
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1079 [self setState:([self state] ? NSOffState : NSOnState)];
1807
d7447c814f8b Fix for selecting radio buttons with the keyboard on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1806
diff changeset
1080 else if(buttonType == NSRadioButton)
d7447c814f8b Fix for selecting radio buttons with the keyboard on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1806
diff changeset
1081 [self setState:NSOnState];
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1082 [self buttonClicked:self];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1083 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1084 else
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1085 {
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1086 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1087 [super keyDown:theEvent];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1088 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1089 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1090 -(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1091 -(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView: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
1092 -(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
1093 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1094
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1095 /* Subclass for a progress type */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1096 @interface DWPercent : NSProgressIndicator
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1097 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1098 void *userdata;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1099 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1100 -(void *)userdata;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1101 -(void)setUserdata:(void *)input;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1102 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1103
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1104 @implementation DWPercent
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1105 -(void *)userdata { return userdata; }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1106 -(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
1107 -(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
1108 @end
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1109
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1110 /* 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
1111 @implementation DWMenuItem
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
1112 -(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
1113 -(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
1114 -(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
1115 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1116
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1117 /* 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
1118 @interface DWScrollBox : NSScrollView
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1119 {
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1120 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
1121 id box;
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1122 }
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1123 -(void *)userdata;
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1124 -(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
1125 -(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
1126 -(id)box;
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1127 @end
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1128
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1129 @implementation DWScrollBox
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1130 -(void *)userdata { return userdata; }
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1131 -(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
1132 -(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
1133 -(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
1134 -(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
1135 @end
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1136
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1137 /* 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
1138 @interface DWTextFieldCell : NSTextFieldCell
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1139 {
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1140 BOOL vcenter;
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1141 }
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1142 -(NSRect)drawingRectForBounds:(NSRect)theRect;
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1143 -(void)setVCenter:(BOOL)input;
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1144 @end
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1145
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1146 @implementation DWTextFieldCell
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1147 -(NSRect)drawingRectForBounds:(NSRect)theRect
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1148 {
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1149 /* Get the parent's idea of where we should draw */
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1150 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
1151
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1152 /* If we are being vertically centered */
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1153 if(vcenter)
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1154 {
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1155 /* Get our ideal size for current text */
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1156 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
1157
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1158 /* Center that in the proposed rect */
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1159 float heightDelta = newRect.size.height - textSize.height;
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1160 if (heightDelta > 0)
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1161 {
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1162 newRect.size.height -= heightDelta;
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1163 newRect.origin.y += (heightDelta / 2);
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1164 }
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1165 }
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1166
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1167 return newRect;
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1168 }
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1169 -(void)setVCenter:(BOOL)input { vcenter = input; }
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1170 @end
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1171
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1172 @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
1173 {
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1174 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
1175 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1176 - (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
1177 - (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
1178 @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
1179
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1180 /* 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
1181 * 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
1182 */
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1183 @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
1184 -(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
1185 {
1063
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
1186 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
1187 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
1188 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
1189 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1190 -(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
1191 -(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
1192 -(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
1193 -(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
1194 -(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
1195 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
1196 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
1197 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
1198 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
1199 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1200 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
1201 {
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1202 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
1203 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1204 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
1205 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1206 -(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
1207 @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
1208
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1209 /* Subclass for a entryfield type */
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1210 @interface DWEntryField : NSTextField
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1211 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1212 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
1213 id clickDefault;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1214 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1215 -(void *)userdata;
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1216 -(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
1217 -(void)setClickDefault:(id)input;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1218 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1219
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1220 @implementation DWEntryField
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1221 -(void *)userdata { return userdata; }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1222 -(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
1223 -(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
1224 -(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
1225 {
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
1226 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
1227 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
1228 {
1236
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1229 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
1230 [clickDefault buttonClicked:self];
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1231 else
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1232 [[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
1233 } else
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1234 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1235 [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
1236 }
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
1237 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1238 -(BOOL)performKeyEquivalent:(NSEvent *)theEvent
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1239 {
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1240 if(([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) == NSCommandKeyMask)
1235
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1241 {
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1242 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
1243 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
1244 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
1245 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
1246 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
1247 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
1248 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
1249 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
1250 }
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1251 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
1252 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1253 -(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
1254 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1255
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1256 /* 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
1257 @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
1258 {
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1259 void *userdata;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1260 id clickDefault;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1261 }
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1262 -(void *)userdata;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1263 -(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
1264 @end
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1265
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1266 @implementation DWText
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1267 -(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
1268 -(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
1269 -(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
1270 @end
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1271
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1272
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1273 /* Subclass for a entryfield password type */
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1274 @interface DWEntryFieldPassword : NSSecureTextField
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1275 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1276 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
1277 id clickDefault;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1278 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1279 -(void *)userdata;
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1280 -(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
1281 -(void)setClickDefault:(id)input;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1282 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1283
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1284 @implementation DWEntryFieldPassword
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1285 -(void *)userdata { return userdata; }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1286 -(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
1287 -(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
1288 -(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
1289 {
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
1290 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
1291 {
1236
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1292 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
1293 [clickDefault buttonClicked:self];
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1294 else
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1295 [[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
1296 }
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1297 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
1298 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1299 [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
1300 }
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
1301 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1302 -(BOOL)performKeyEquivalent:(NSEvent *)theEvent
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1303 {
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1304 if(([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) == NSCommandKeyMask)
1235
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1305 {
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1306 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
1307 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
1308 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
1309 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
1310 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
1311 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
1312 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
1313 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
1314 }
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1315 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
1316 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1317 -(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
1318 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1319
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1320 /* Subclass for a Notebook control type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1321 @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
1322 #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
1323 <NSTabViewDelegate>
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1324 #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
1325 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1326 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1327 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
1328 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1329 -(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
1330 -(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
1331 -(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
1332 -(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
1333 -(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
1334 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1335
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1336 /* 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
1337 @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
1338 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1339 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1340 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
1341 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1342 -(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
1343 -(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
1344 -(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
1345 -(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
1346 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1347
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1348 @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
1349 -(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
1350 -(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
1351 -(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
1352 -(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
1353 -(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
1354 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1355 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
1356 DWNotebookPage *page = (DWNotebookPage *)notepage;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1357
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1358 if([object isMemberOfClass:[DWBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1359 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1360 DWBox *view = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1361 Box *box = [view box];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1362 NSSize size = [view frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1363 _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
1364 _handle_resize_events(box);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1365 }
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
1366 _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
1367 }
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1368 -(void)keyDown:(NSEvent *)theEvent
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1369 {
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1370 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
1371
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
1372 if(vk == NSTabCharacter || vk == NSBackTabCharacter)
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1373 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
1374 else if(vk == NSLeftArrowFunctionKey)
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1375 {
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1376 NSArray *pages = [self tabViewItems];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1377 DWNotebookPage *page = (DWNotebookPage *)[self selectedTabViewItem];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1378 NSUInteger index = [pages indexOfObject:page];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
1379
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1380 if(index != NSNotFound)
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1381 {
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1382 if(index > 0)
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1383 [self selectTabViewItem:[pages objectAtIndex:(index-1)]];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1384 else
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1385 [self selectTabViewItem:[pages objectAtIndex:0]];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
1386
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1387 }
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1388 }
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
1389 else if(vk == NSRightArrowFunctionKey)
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1390 {
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1391 NSArray *pages = [self tabViewItems];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1392 DWNotebookPage *page = (DWNotebookPage *)[self selectedTabViewItem];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1393 NSUInteger index = [pages indexOfObject:page];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1394 NSUInteger count = [pages count];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
1395
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1396 if(index != NSNotFound)
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1397 {
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1398 if(index + 1 < count)
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1399 [self selectTabViewItem:[pages objectAtIndex:(index+1)]];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1400 else
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1401 [self selectTabViewItem:[pages objectAtIndex:(count-1)]];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
1402
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1403 }
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1404 }
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1405 [super keyDown:theEvent];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1406 }
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1407 -(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; }
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1408 -(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView: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
1409 -(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
1410 @end
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1411
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1412 @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
1413 -(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
1414 -(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
1415 -(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
1416 -(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
1417 -(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
1418 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1419
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1420 /* Subclass for a color chooser type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1421 @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
1422 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1423 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
1424 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
1425 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1426 -(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
1427 -(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
1428 -(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
1429 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1430
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1431 @implementation DWColorChoose
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1432 -(void)changeColor:(id)sender
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1433 {
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1434 if(!dialog)
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1435 [self close];
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1436 else
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1437 pickedcolor = [self color];
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1438 }
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1439 -(BOOL)windowShouldClose:(id)window
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1440 {
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1441 if(dialog)
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1442 {
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1443 DWDialog *d = dialog;
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1444 dialog = nil;
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1445 dw_dialog_dismiss(d, pickedcolor);
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1446 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1447 [self close];
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1448 return NO;
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1449 }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1450 -(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
1451 -(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
1452 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1453
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1454 /* 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
1455 @interface DWFontChoose : NSFontPanel
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1456 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1457 DWDialog *dialog;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1458 NSFontManager *fontManager;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1459 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1460 -(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
1461 -(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
1462 -(DWDialog *)dialog;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1463 @end
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1464
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1465 @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
1466 -(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
1467 {
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1468 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
1469 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
1470 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
1471 [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
1472 return NO;
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1473 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1474 -(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
1475 -(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
1476 -(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
1477 @end
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
1478
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1479 /* Subclass for a splitbar type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1480 @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
1481 #ifdef BUILDING_FOR_SNOW_LEOPARD
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1482 <NSSplitViewDelegate>
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1483 #endif
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1484 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1485 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
1486 float percent;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1487 }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1488 -(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
1489 -(void *)userdata;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1490 -(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
1491 -(float)percent;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1492 -(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
1493 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1494
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1495 @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
1496 -(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
1497 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1498 NSArray *views = [self subviews];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1499 id object;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1500
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1501 for(object in views)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1502 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1503 if([object isMemberOfClass:[DWBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1504 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1505 DWBox *view = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1506 Box *box = [view box];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1507 NSSize size = [view frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1508 _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
1509 _handle_resize_events(box);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1510 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1511 }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1512 }
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
1513 -(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
1514 -(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
1515 -(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
1516 -(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
1517 -(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
1518 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1519
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1520 /* 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
1521 @interface DWSlider : NSSlider
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1522 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1523 void *userdata;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1524 }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1525 -(void *)userdata;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1526 -(void)setUserdata:(void *)input;
704
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
1527 -(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
1528 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1529
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1530 @implementation DWSlider
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1531 -(void *)userdata { return userdata; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1532 -(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
1533 -(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
1534 -(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
1535 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1536
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1537 /* 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
1538 @interface DWScrollbar : NSScroller
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1539 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1540 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
1541 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
1542 double visible;
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
1543 int vertical;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1544 }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1545 -(void *)userdata;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1546 -(void)setUserdata:(void *)input;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1547 -(float)range;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1548 -(float)visible;
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
1549 -(int)vertical;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
1550 -(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
1551 -(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
1552 -(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
1553 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1554
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1555 @implementation DWScrollbar
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1556 -(void *)userdata { return userdata; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1557 -(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
1558 -(float)range { return range; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1559 -(float)visible { return visible; }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
1560 -(int)vertical { return vertical; }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
1561 -(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
1562 -(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
1563 -(void)scrollerChanged:(id)sender
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1564 {
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
1565 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
1566 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
1567 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
1568
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1569 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
1570 {
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1571
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
1572 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
1573 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
1574 {
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1575 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
1576 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1577 break;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1578
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
1579 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
1580 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
1581 {
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1582 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
1583 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1584 break;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1585
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
1586 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
1587 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
1588 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
1589 {
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1590 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
1591 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1592 break;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1593
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
1594 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
1595 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
1596 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
1597 {
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
1598 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
1599 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
1600 break;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1601
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
1602 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
1603 ; /* 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
1604 }
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
1605 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
1606 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
1607 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
1608 {
923
0ac67b62b594 Fix int to double conversion issues causing scrollbar issues on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 922
diff changeset
1609 [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
1610 }
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
1611 _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
1612 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1613 -(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
1614 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1615
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1616 /* Subclass for a MLE type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1617 @interface DWMLE : NSTextView
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1618 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1619 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
1620 id scrollview;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1621 }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1622 -(void *)userdata;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1623 -(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
1624 -(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
1625 -(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
1626 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1627
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1628 @implementation DWMLE
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1629 -(void *)userdata { return userdata; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1630 -(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
1631 -(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
1632 -(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
1633 -(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
1634 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1635
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1636 /* Subclass NSTextFieldCell for displaying image and text */
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1637 @interface DWImageAndTextCell : NSTextFieldCell
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1638 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1639 @private
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1640 NSImage *image;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1641 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1642 -(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
1643 -(NSImage *)image;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1644 -(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
1645 -(NSSize)cellSize;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1646 @end
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1647
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1648 @implementation DWImageAndTextCell
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1649 -(void)dealloc
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1650 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1651 [image release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1652 image = nil;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1653 [super dealloc];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1654 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1655 -copyWithZone:(NSZone *)zone
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1656 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1657 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
1658 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
1659 return cell;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1660 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1661 -(void)setImage:(NSImage *)anImage
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1662 {
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1663 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
1664 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1665 [image release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1666 image = [anImage retain];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1667 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1668 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1669 -(NSImage *)image
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1670 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1671 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
1672 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1673 -(NSRect)imageFrameForCellFrame:(NSRect)cellFrame
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1674 {
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1675 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
1676 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1677 NSRect imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1678 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
1679 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
1680 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
1681 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
1682 return imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1683 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1684 else
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1685 return NSZeroRect;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1686 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1687 -(void)editWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject event:(NSEvent *)theEvent
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1688 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1689 NSRect textFrame, imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1690 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
1691 [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
1692 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1693 -(void)selectWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject start:(NSInteger)selStart length:(NSInteger)selLength
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1694 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1695 NSRect textFrame, imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1696 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
1697 [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
1698 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1699 -(void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1700 {
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1701 if(image != nil)
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
1702 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1703 NSSize imageSize;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1704 NSRect imageFrame;
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1705 SEL sdir = NSSelectorFromString(@"drawInRect:fromRect:operation:fraction:respectFlipped:hints:");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1706
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1707 imageSize = [image size];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1708 NSDivideRect(cellFrame, &imageFrame, &cellFrame, 3 + imageSize.width, NSMinXEdge);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1709 if ([self drawsBackground])
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
1710 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1711 [[self backgroundColor] set];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1712 NSRectFill(imageFrame);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1713 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1714 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
1715 imageFrame.size = imageSize;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1716
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1717 /* New method for 10.6 and later */
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1718 if([image respondsToSelector:sdir])
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1719 {
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1720 IMP idir = [image methodForSelector:sdir];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1721
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1722 imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1723
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1724 idir(image, sdir, imageFrame, NSZeroRect, NSCompositeSourceOver, 1.0, YES, nil);
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1725 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1726 else
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1727 {
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1728 /* Old method for 10.5 */
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1729 SEL sctp = NSSelectorFromString(@"compositeToPoint:operation:");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1730
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1731 if ([controlView isFlipped])
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1732 imageFrame.origin.y += ceil((cellFrame.size.height + imageFrame.size.height) / 2);
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1733 else
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1734 imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1735
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1736 if([image respondsToSelector:sctp])
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1737 {
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1738 IMP ictp = [image methodForSelector:sctp];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1739
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1740 ictp(image, sctp, imageFrame.origin, NSCompositeSourceOver);
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1741 }
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
1742 }
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1743 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1744 [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
1745 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1746 -(NSSize)cellSize
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1747 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1748 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
1749 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
1750 return cellSize;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1751 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1752 @end
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1753
655
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
1754 /* Subclass for a Container/List type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1755 @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
1756 #ifdef BUILDING_FOR_SNOW_LEOPARD
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
1757 <NSTableViewDataSource,NSTableViewDelegate>
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1758 #endif
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1759 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1760 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1761 NSMutableArray *tvcols;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1762 NSMutableArray *data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1763 NSMutableArray *types;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1764 NSPointerArray *titles;
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1765 NSColor *fgcolor, *oddcolor, *evencolor;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1766 int lastAddPoint, lastQueryPoint;
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
1767 id scrollview;
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
1768 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
1769 }
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1770 -(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
1771 -(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
1772 -(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
1773 -(void *)userdata;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1774 -(void)setUserdata:(void *)input;
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
1775 -(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
1776 -(int)filesystem;
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
1777 -(id)scrollview;
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
1778 -(void)setScrollview:(id)input;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1779 -(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
1780 -(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
1781 -(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
1782 -(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
1783 -(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
1784 -(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
1785 -(void)removeRow:(int)row;
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1786 -(void)setRow:(int)row title:(void *)input;
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1787 -(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
1788 -(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
1789 -(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
1790 -(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
1791 -(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
1792 -(void)setLastQueryPoint:(int)input;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1793 -(void)clear;
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1794 -(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
1795 -(void)optimize;
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
1796 -(NSSize)getsize;
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
1797 -(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
1798 -(void)doubleClicked:(id)sender;
829
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
1799 -(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
1800 -(void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn;
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1801 -(void)selectionChanged:(id)sender;
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1802 -(NSMenu *)menuForEvent:(NSEvent *)event;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1803 @end
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1804
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1805 @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
1806 -(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
1807 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1808 if(tvcols && data)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1809 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1810 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
1811 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
1812 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
1813 {
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1814 return total / cols;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1815 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1816 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1817 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
1818 }
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
1819 -(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
1820 {
1134
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1821 if(tvcols && data)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1822 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1823 int z, col = -1;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1824 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
1825
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1826 for(z=0;z<count;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1827 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1828 if([tvcols objectAtIndex:z] == aCol)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1829 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1830 col = z;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1831 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1832 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1833 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1834 if(col != -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1835 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1836 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
1837 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
1838 {
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
1839 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
1840 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
1841 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1842 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1843 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1844 return nil;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1845 }
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
1846 -(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
1847 -(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
1848 -(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
1849 -(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
1850 -(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
1851 -(id)scrollview { return scrollview; }
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1852 -(void)setScrollview:(id)input { scrollview = input; }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1853 -(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
1854 -(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
1855 -(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
1856 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1857 NSColor *oldodd = oddcolor;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1858 NSColor *oldeven = evencolor;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1859 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
1860 unsigned long _even = _get_color(evencol);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1861
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1862 /* 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
1863 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
1864 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
1865 else
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1866 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
1867 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
1868 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
1869 else
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1870 evencolor = NULL;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1871 [oldodd release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1872 [oldeven release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1873 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1874 -(int)insertRow:(NSArray *)input at:(int)index
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1875 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1876 if(data)
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1877 {
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
1878 unsigned long start = [tvcols count] * index;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1879 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
1880 if(index < lastAddPoint)
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
1881 {
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
1882 lastAddPoint++;
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
1883 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1884 [data insertObjects:input atIndexes:set];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1885 [titles insertPointer:NULL atIndex:index];
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
1886 [set release];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1887 return (int)[titles count];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1888 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1889 return 0;
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1890 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1891 -(int)addRow:(NSArray *)input
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1892 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1893 if(data)
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1894 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1895 lastAddPoint = (int)[titles count];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1896 [data addObjectsFromArray:input];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1897 [titles addPointer:NULL];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1898 return (int)[titles count];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1899 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1900 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
1901 }
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
1902 -(int)addRows:(int)number
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1903 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1904 if(tvcols)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1905 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1906 int count = (int)(number * [tvcols count]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1907 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1908
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1909 lastAddPoint = (int)[titles count];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1910
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1911 for(z=0;z<count;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1912 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1913 [data addObject:[NSNull null]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1914 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1915 for(z=0;z<number;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1916 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1917 [titles addPointer:NULL];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1918 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1919 return (int)[titles count];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1920 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1921 return 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1922 }
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
1923 -(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
1924 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1925 DWImageAndTextCell *bcell = cell;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1926
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1927 /* 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
1928 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
1929 {
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
1930 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
1931 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
1932 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
1933 [bcell setImage:img];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1934 }
1215
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1935 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
1936 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1937 /* 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
1938 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
1939 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1940 if(evencolor)
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1941 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1942 [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
1943 [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
1944 }
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1945 else
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1946 [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
1947 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
1948 else
1215
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1949 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1950 if(oddcolor)
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1951 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1952 [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
1953 [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
1954 }
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1955 else
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
1956 [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
1957 }
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
1958 }
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
1959 }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1960 -(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
1961 {
1288
d10969835d2d Changes to allow removing icon on BITMAPORICON container columns on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1279
diff changeset
1962 if(tvcols)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1963 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1964 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
1965 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
1966 {
1288
d10969835d2d Changes to allow removing icon on BITMAPORICON container columns on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1279
diff changeset
1967 if(!input)
d10969835d2d Changes to allow removing icon on BITMAPORICON container columns on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1279
diff changeset
1968 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
1969 [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
1970 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1971 }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
1972 }
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
1973 -(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
1974 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1975 if(tvcols)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1976 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1977 int z, start, end;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1978 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
1979
1705
3fa0448d3a7e Fixed a bug in dw_container_delete_row() on Mac and potentially a similar bug in dw_container_delete().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1704
diff changeset
1980 start = (count * row);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1981 end = start + count;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1982
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1983 for(z=start;z<end;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1984 {
1705
3fa0448d3a7e Fixed a bug in dw_container_delete_row() on Mac and potentially a similar bug in dw_container_delete().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1704
diff changeset
1985 [data removeObjectAtIndex:start];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1986 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1987 [titles removePointerAtIndex:row];
1705
3fa0448d3a7e Fixed a bug in dw_container_delete_row() on Mac and potentially a similar bug in dw_container_delete().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1704
diff changeset
1988 if(lastAddPoint > 0 && lastAddPoint > row)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1989 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1990 lastAddPoint--;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1991 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1992 }
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
1993 }
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
1994 -(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
1995 -(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
1996 -(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
1997 -(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
1998 -(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
1999 -(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
2000 -(void)setLastQueryPoint:(int)input { lastQueryPoint = input; }
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2001 -(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
2002 -(void)setup
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2003 {
1774
4cc999e757a3 Check for pointerArrayWithWeakObjects before weakObjectsPointerArray on Mac
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1773
diff changeset
2004 SEL swopa = NSSelectorFromString(@"pointerArrayWithWeakObjects");
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2005
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2006 if(![[NSPointerArray class] respondsToSelector:swopa])
1774
4cc999e757a3 Check for pointerArrayWithWeakObjects before weakObjectsPointerArray on Mac
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1773
diff changeset
2007 swopa = NSSelectorFromString(@"weakObjectsPointerArray");
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2008 if(![[NSPointerArray class] respondsToSelector:swopa])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2009 return;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2010
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2011 IMP iwopa = [[NSPointerArray class] methodForSelector:swopa];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2012
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2013 titles = iwopa([NSPointerArray class], swopa);
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2014 [titles retain];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2015 tvcols = [[[NSMutableArray alloc] init] retain];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2016 data = [[[NSMutableArray alloc] init] retain];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2017 types = [[[NSMutableArray alloc] init] retain];
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2018
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2019 [[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
2020 }
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2021 -(NSSize)getsize
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2022 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2023 int cwidth = 0, cheight = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2024
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2025 if(tvcols)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2026 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2027 int z;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2028 int colcount = (int)[tvcols count];
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2029 int rowcount = (int)[self numberOfRowsInTableView:self];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2030
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2031 for(z=0;z<colcount;z++)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2032 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2033 NSTableColumn *column = [tvcols objectAtIndex:z];
1574
ae5e322584cd Use [NSTableColumn width] method to get header width on Mac instead of frame size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1573
diff changeset
2034 int width = [column width];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2035
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2036 if(rowcount > 0)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2037 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2038 int x;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2039
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2040 for(x=0;x<rowcount;x++)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2041 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2042 NSCell *cell = [self preparedCellAtColumn:z row:x];
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2043 int thiswidth = [cell cellSize].width;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2044
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2045 /* If on the first column... add up the heights */
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2046 if(z == 0)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2047 cheight += [cell cellSize].height;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2048
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2049 /* Check the image inside the cell to get its width */
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2050 if([cell isMemberOfClass:[NSImageCell class]])
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2051 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2052 int index = (int)(x * [tvcols count]) + z;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2053 NSImage *image = [data objectAtIndex:index];
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2054 if([image isMemberOfClass:[NSImage class]])
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2055 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2056 thiswidth = [image size].width;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2057 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2058 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2059
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2060 if(thiswidth > width)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2061 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2062 width = thiswidth;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2063 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2064 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2065 /* If the image is missing default the optimized width to 16. */
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2066 if(!width && [[types objectAtIndex:z] intValue] & DW_CFA_BITMAPORICON)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2067 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2068 width = 16;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2069 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2070 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2071 if(width)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2072 cwidth += width;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2073 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2074 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2075 cwidth += 16;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2076 cheight += 16;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2077 return NSMakeSize(cwidth, cheight);
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2078 }
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
2079 -(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
2080 {
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
2081 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
2082 {
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
2083 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
2084 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
2085 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
2086
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
2087 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
2088 {
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
2089 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
2090 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
2091 {
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
2092 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
2093 {
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
2094 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
2095 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
2096 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
2097
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
2098 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
2099 {
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
2100 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
2101 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
2102
866
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2103 /* 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
2104 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
2105 {
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2106 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
2107 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
2108 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
2109 {
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2110 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
2111 }
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2112 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2113
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
2114 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
2115 {
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
2116 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
2117 }
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
2118 }
866
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2119 /* 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
2120 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
2121 {
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
2122 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
2123 }
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
2124 /* 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
2125 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
2126 {
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
2127 [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
2128 }
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
2129 }
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
2130 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
2131 {
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
2132 [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
2133 }
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
2134 }
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
2135 }
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
2136 }
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
2137 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2138 -(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
2139 {
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2140 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
2141
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2142 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
2143 [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
2144
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2145 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
2146 {
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2147 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
2148 NSTextFieldCell *cell = [tableColumn dataCell];
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2149 [cell setTextColor:fgcolor];
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2150 }
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2151 }
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
2152 -(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
2153 {
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
2154 /* Handler for container class */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2155 _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
2156 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2157 -(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
2158 {
829
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
2159 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
2160 {
829
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
2161 _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
2162 }
829
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
2163 [super keyUp:theEvent];
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
2164 }
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
2165
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
2166 -(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
2167 {
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
2168 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
2169
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
2170 /* Handler for column click class */
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
2171 _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
2172 }
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2173 -(void)selectionChanged:(id)sender
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2174 {
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
2175 /* Handler for container class */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2176 _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
2177 /* 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
2178 _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
2179 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2180 -(NSMenu *)menuForEvent:(NSEvent *)event
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2181 {
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2182 int row;
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2183 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
2184 row = (int)[self rowAtPoint:where];
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2185 _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
2186 return nil;
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2187 }
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2188 -(void)keyDown:(NSEvent *)theEvent
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2189 {
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
2190 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
2191
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
2192 if(vk == NSTabCharacter || vk == NSBackTabCharacter)
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2193 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2194 [super keyDown:theEvent];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2195 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2196 -(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2197 -(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView: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
2198 -(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
2199 @end
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2200
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
2201 /* 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
2202 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
2203 {
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
2204 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
2205 {
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
2206 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
2207 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
2208 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
2209
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
2210 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
2211 index = [node indexOfObject:item];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2212
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
2213 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
2214 {
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
2215 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
2216 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
2217
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
2218 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
2219 {
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
2220 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
2221 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2222
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
2223 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
2224 {
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
2225 _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
2226 [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
2227 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
2228 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
2229 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
2230 }
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
2231 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
2232 {
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
2233 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
2234 [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
2235 _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
2236 }
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
2237 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
2238 _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
2239 }
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
2240 }
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
2241 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
2242 {
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
2243 [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
2244 }
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
2245 }
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
2246
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2247 /* Subclass for a Tree type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2248 @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
2249 #ifdef BUILDING_FOR_SNOW_LEOPARD
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
2250 <NSOutlineViewDataSource,NSOutlineViewDelegate>
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2251 #endif
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2252 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2253 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
2254 NSTableColumn *treecol;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2255 NSMutableArray *data;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2256 /* 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
2257 * 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
2258 */
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2259 id scrollview;
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2260 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
2261 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2262 -(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
2263 -(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
2264 -(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
2265 -(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
2266 -(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
2267 -(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
2268 -(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
2269 -(void *)userdata;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2270 -(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
2271 -(void)treeSelectionChanged:(id)sender;
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2272 -(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
2273 -(NSScrollView *)scrollview;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2274 -(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
2275 -(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
2276 -(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
2277 -(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
2278 @end
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2279
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2280 @implementation DWTree
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2281 -(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
2282 {
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2283 self = [super init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2284
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2285 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
2286 {
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
2287 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
2288 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
2289 [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
2290 [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
2291 [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
2292 [[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
2293 [[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
2294 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2295 return self;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2296 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2297 -(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
2298 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2299 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
2300 {
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
2301 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
2302 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
2303 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2304 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2305 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2306 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
2307 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2308 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2309 -(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
2310 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2311 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
2312 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2313 -(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
2314 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2315 if(item)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2316 {
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
2317 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
2318 {
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
2319 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
2320 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
2321 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2322 else
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2323 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2324 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
2325 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2326 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2327 else
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2328 {
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2329 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
2330 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2331 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2332 -(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
2333 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2334 if(item)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2335 {
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
2336 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
2337 {
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
2338 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
2339 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
2340 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2341 else
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2342 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2343 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
2344 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2345 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2346 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
2347 }
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
2348 -(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
2349 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2350 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
2351 {
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
2352 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
2353 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
2354 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
2355 [(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
2356 }
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
2357 }
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2358 -(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
2359 -(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
2360 {
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2361 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
2362 if(parent)
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2363 {
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
2364 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
2365 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
2366 {
692
bd909322f40d Added "retain"s to the DWTree/DWContainer/DWListBox classes memory allocation
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 691
diff changeset
2367 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
2368 [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
2369 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2370 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2371 else
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2372 {
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2373 if(!data)
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2374 {
692
bd909322f40d Added "retain"s to the DWTree/DWContainer/DWListBox classes memory allocation
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 691
diff changeset
2375 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
2376 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2377 }
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
2378 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
2379 {
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
2380 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
2381 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
2382 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
2383 [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
2384 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
2385 [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
2386 }
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
2387 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
2388 {
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
2389 [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
2390 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2391 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2392 -(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
2393 -(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
2394 -(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
2395 {
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2396 /* 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
2397 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
2398
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
2399 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
2400 {
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
2401 _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
2402 }
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2403 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2404 -(void)treeItemExpanded:(NSNotification *)notification
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2405 {
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2406 id item = [[notification userInfo ] objectForKey: @"NSObject"];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2407
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2408 if(item)
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2409 {
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2410 _event_handler(self, (void *)item, 16);
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2411 }
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2412 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2413 -(NSMenu *)menuForEvent:(NSEvent *)event
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2414 {
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2415 int row;
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2416 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
2417 row = (int)[self rowAtPoint:where];
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2418 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
2419 _event_handler(self, (NSEvent *)item, 10);
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2420 return nil;
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
2421 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2422 -(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
2423 -(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
2424 -(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
2425 -(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
2426 {
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
2427 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
2428 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
2429 [fgcolor retain];
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2430 [cell setTextColor:fgcolor];
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2431 }
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
2432 -(void)clear { NSMutableArray *toclear = data; data = nil; _free_tree_recurse(toclear, NULL); [self reloadData]; }
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2433 -(void)keyDown:(NSEvent *)theEvent
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2434 {
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
2435 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
2436
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
2437 if(vk == NSTabCharacter || vk == NSBackTabCharacter)
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2438 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2439 [super keyDown:theEvent];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2440 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2441 -(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2442 -(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView:self]; }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2443 -(void)dealloc
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2444 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2445 UserData *root = userdata;
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2446 _remove_userdata(&root, NULL, TRUE);
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2447 _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
2448 [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
2449 dw_signal_disconnect_by_window(self);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2450 [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
2451 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2452 @end
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2453
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2454 /* Subclass for a Calendar type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2455 @interface DWCalendar : NSDatePicker
655
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2456 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2457 void *userdata;
655
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2458 }
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2459 -(void *)userdata;
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2460 -(void)setUserdata:(void *)input;
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2461 @end
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2462
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2463 @implementation DWCalendar
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2464 -(void *)userdata { return userdata; }
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2465 -(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
2466 -(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
2467 @end
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2468
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2469 /* Subclass for a Combobox type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2470 @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
2471 #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
2472 <NSComboBoxDelegate>
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2473 #endif
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2474 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2475 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
2476 id clickDefault;
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2477 }
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2478 -(void *)userdata;
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2479 -(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
2480 -(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
2481 -(void)setClickDefault:(id)input;
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2482 @end
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2483
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2484 @implementation DWComboBox
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2485 -(void *)userdata { return userdata; }
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2486 -(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
2487 -(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
2488 -(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
2489 -(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
2490 {
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
2491 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
2492 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2493 [[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
2494 } else
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2495 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2496 [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
2497 }
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
2498 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
2499 -(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
2500 @end
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2501
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
2502 /* 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
2503 /* 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
2504 @interface DWStepper : NSStepper
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2505 {
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
2506 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
2507 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
2508 }
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
2509 -(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
2510 -(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
2511 -(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
2512 -(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
2513 -(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
2514 -(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
2515 @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
2516
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
2517 @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
2518 -(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
2519 -(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
2520 -(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
2521 -(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
2522 -(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
2523 {
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
2524 [super mouseDown:event];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2525 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
2526 [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
2527 }
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
2528 -(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
2529 {
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2530 [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
2531 _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
2532 }
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2533 -(void)keyDown:(NSEvent *)theEvent
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2534 {
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2535 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2536 if(vk == VK_UP || vk == VK_DOWN)
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2537 {
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2538 if(vk == VK_UP)
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2539 [self setIntegerValue:([self integerValue]+[self increment])];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2540 else
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2541 [self setIntegerValue:([self integerValue]-[self increment])];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2542 [self mouseUp:theEvent];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2543 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2544 else
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2545 {
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2546 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2547 [super keyDown:theEvent];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2548 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2549 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2550 -(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2551 -(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView: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
2552 @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
2553
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2554 /* Subclass for a Spinbutton type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2555 @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
2556 #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
2557 <NSTextFieldDelegate>
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2558 #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
2559 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2560 void *userdata;
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2561 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
2562 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
2563 id clickDefault;
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2564 }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2565 -(id)init;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2566 -(void *)userdata;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2567 -(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
2568 -(NSTextField *)textfield;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2569 -(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
2570 -(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
2571 -(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
2572 @end
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2573
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2574 @implementation DWSpinButton
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2575 -(id)init
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2576 {
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2577 self = [super init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2578
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2579 if(self)
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2580 {
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
2581 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
2582 [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
2583 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
2584 [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
2585 [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
2586 [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
2587 [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
2588 [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
2589 }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2590 return self;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2591 }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
2592 -(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
2593 -(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
2594 -(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
2595 -(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
2596 -(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
2597 {
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
2598 [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
2599 [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
2600 _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
2601 }
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
2602 -(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
2603 -(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
2604 {
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
2605 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
2606 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2607 [[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
2608 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2609 else
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2610 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2611 [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
2612 }
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
2613 }
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
2614 -(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
2615 -(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
2616 @end
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
2617
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2618 /* 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
2619 * 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
2620 * 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
2621 */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
2622 @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
2623 @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
2624
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
2625 @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
2626 @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
2627
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2628 /* 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
2629 */
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
2630 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
2631 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2632 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
2633
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2634 new->message = message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2635 new->window = window;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2636 new->id = msgid;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2637 new->signalfunction = signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2638 new->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2639 new->next = NULL;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2640
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2641 if (!Root)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2642 Root = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2643 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2644 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2645 SignalHandler *prev = NULL, *tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2646 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2647 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2648 if(tmp->message == message &&
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2649 tmp->window == window &&
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2650 tmp->id == msgid &&
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2651 tmp->signalfunction == signalfunction)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2652 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2653 tmp->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2654 free(new);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2655 return;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2656 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2657 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2658 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2659 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2660 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2661 prev->next = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2662 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2663 Root = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2664 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2665 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2666
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2667 /* 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
2668 ULONG _findsigmessage(char *signame)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2669 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2670 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2671
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2672 for(z=0;z<SIGNALMAX;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2673 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2674 if(strcasecmp(signame, SignalTranslate[z].name) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2675 return SignalTranslate[z].message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2676 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2677 return 0L;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2678 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2679
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2680 unsigned long _foreground = 0xAAAAAA, _background = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2681
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
2682 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
2683 {
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
2684 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
2685
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
2686 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
2687 {
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
2688 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
2689
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
2690 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
2691 {
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
2692 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
2693
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
2694 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
2695 {
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
2696 _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
2697 }
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
2698 }
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
2699 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
2700 {
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
2701 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
2702 {
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
2703 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
2704 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
2705 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
2706 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
2707
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
2708 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
2709 {
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
2710 [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
2711 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2712
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
2713 /* 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
2714 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
2715 {
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
2716 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
2717 {
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
2718 [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
2719 _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
2720 }
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
2721 }
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
2722 }
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
2723 /* 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
2724 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
2725 {
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
2726 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
2727 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
2728 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
2729
1805
2bcdc3cfffa7 Make sure the view packed into the notebook on Mac is a DWBox class...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1802
diff changeset
2730 if([view isMemberOfClass:[DWBox class]])
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
2731 {
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
2732 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
2733 _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
2734 }
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
2735 }
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
2736 /* 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
2737 * 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
2738 */
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
2739 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
2740 {
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
2741 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
2742 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
2743 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
2744
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
2745 /* 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
2746 _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
2747 }
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
2748 }
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
2749 }
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
2750 }
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
2751
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2752 /* 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
2753 * and does expansion as necessary.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2754 */
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
2755 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
2756 {
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
2757 /* 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
2758 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
2759 /* 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
2760 * 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
2761 * 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
2762 */
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
2763 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
2764 int upymax = 0, upxmax = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2765
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
2766 /* 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
2767 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
2768
798
1b0a0775ec19 Ok... groupbox calculation fix try #2!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 797
diff changeset
2769 /* Handle special groupbox case */
1b0a0775ec19 Ok... groupbox calculation fix try #2!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 797
diff changeset
2770 if(thisbox->grouphwnd)
1b0a0775ec19 Ok... groupbox calculation fix try #2!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 797
diff changeset
2771 {
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
2772 /* 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
2773 * 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
2774 */
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
2775 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
2776 {
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
2777 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
2778 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
2779 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
2780
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
2781 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
2782 {
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
2783 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
2784 }
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
2785 /* 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
2786 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
2787
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
2788 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
2789 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
2790 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2791
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
2792 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
2793 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
2794 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
2795 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
2796 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2797
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
2798 /* 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
2799 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
2800 {
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
2801 int itempad, itemwidth, itemheight;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2802
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
2803 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
2804 {
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
2805 id box = thisbox->items[z].hwnd;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2806 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
2807
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2808 if(tmp)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2809 {
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
2810 /* 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
2811 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
2812 {
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
2813 (*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
2814
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
2815 /* 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
2816 _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
2817
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
2818 /* 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
2819 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
2820 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
2821
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
2822 /* 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
2823 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
2824 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
2825 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
2826 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
2827
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
2828 (*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
2829 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2830 }
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
2831 }
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
2832
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
2833 /* 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
2834 * 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
2835 */
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
2836 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
2837 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
2838 itemheight = thisbox->items[z].height + itempad;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2839
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
2840 /* 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
2841 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
2842 {
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
2843 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
2844 uxmax = itemwidth;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2845
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
2846 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
2847 {
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
2848 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
2849 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
2850 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2851 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
2852 {
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
2853 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
2854 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
2855 }
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
2856 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
2857 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
2858 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
2859 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
2860 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
2861 }
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
2862 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
2863 {
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
2864 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
2865 uymax = itemheight;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2866 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
2867 {
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
2868 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
2869 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
2870 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2871 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
2872 {
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
2873 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
2874 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
2875 }
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
2876 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
2877 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
2878 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
2879 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
2880 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
2881 }
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
2882 }
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
2883
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
2884 /* 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
2885 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
2886 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
2887 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
2888 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
2889
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
2890 /* 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
2891 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
2892 {
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
2893 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
2894 {
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
2895 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
2896 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
2897 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
2898 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
2899
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
2900 /* 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
2901 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
2902 {
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
2903 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
2904 {
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
2905 int expandablex = thisbox->minwidth - thisbox->usedpadx;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2906
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
2907 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
2908 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
2909 }
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
2910 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
2911 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
2912 }
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
2913 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
2914 {
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
2915 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
2916 {
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
2917 int expandabley = thisbox->minheight - thisbox->usedpady;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2918
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
2919 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
2920 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
2921 }
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
2922 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
2923 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
2924 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2925
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
2926 /* 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
2927 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
2928 {
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
2929 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
2930 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
2931 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
2932 NSSize size;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2933
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
2934 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
2935 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
2936 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
2937 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
2938 [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
2939 [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
2940
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
2941 /* 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
2942 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
2943 {
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
2944 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
2945 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
2946
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
2947 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
2948 {
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
2949 (*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
2950 _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
2951 (*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
2952 }
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
2953 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2954
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
2955 /* 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
2956 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
2957 {
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
2958 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
2959 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
2960 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
2961
1805
2bcdc3cfffa7 Make sure the view packed into the notebook on Mac is a DWBox class...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1802
diff changeset
2962 if([view isMemberOfClass:[DWBox 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
2963 {
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
2964 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
2965 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
2966 _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
2967 _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
2968 }
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
2969 }
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
2970 /* 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
2971 * 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
2972 */
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
2973 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
2974 {
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
2975 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
2976 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
2977 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
2978 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
2979 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
2980
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
2981 /* 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
2982 _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
2983
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
2984 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
2985 {
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
2986 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
2987 }
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
2988 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
2989 {
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
2990 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
2991 }
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
2992 [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
2993
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
2994 /* 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
2995 _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
2996 _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
2997 }
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
2998 /* 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
2999 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
3000 {
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
3001 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
3002 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
3003 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
3004 [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
3005 [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
3006 [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
3007 [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
3008 }
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
3009 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
3010 {
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
3011 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
3012 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
3013 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
3014
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
3015 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
3016 {
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
3017 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
3018 [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
3019 }
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
3020 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
3021 {
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
3022 [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
3023 }
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
3024 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3025
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
3026 /* 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
3027 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
3028 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
3029 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
3030 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
3031 }
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
3032 }
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
3033 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3034 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3035
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3036 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
3037 {
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
3038 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
3039 {
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
3040 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
3041 {
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
3042 int depth = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3043
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
3044 /* 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
3045 _resize_box(thisbox, &depth, x, y, 1);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3046
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
3047 /* 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
3048 _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
3049 }
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
3050 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3051 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3052
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
3053 NSMenu *_generate_main_menu()
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
3054 {
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
3055 NSString *applicationName = nil;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3056
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
3057 /* 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
3058 #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
3059 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
3060 #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
3061 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
3062 {
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3063 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
3064 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3065
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3066 /* Create the main menu */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3067 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
3068
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3069 NSMenuItem * mitem = [mainMenu addItemWithTitle:@"Apple" action:NULL keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3070 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
3071
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3072 [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
3073
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3074 /* Setup the Application menu */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3075 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
3076 action:@selector(orderFrontStandardAboutPanel:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3077 keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3078 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3079
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3080 [menu addItem:[NSMenuItem separatorItem]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3081
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3082 item = [menu addItemWithTitle:NSLocalizedString(@"Services", nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3083 action:NULL
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3084 keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3085 NSMenu * servicesMenu = [[[NSMenu alloc] initWithTitle:@"Services"] autorelease];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3086 [menu setSubmenu:servicesMenu forItem:item];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3087 [DWApp setServicesMenu:servicesMenu];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3088
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3089 [menu addItem:[NSMenuItem separatorItem]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3090
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3091 item = [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Hide", nil), applicationName]
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3092 action:@selector(hide:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3093 keyEquivalent:@"h"];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3094 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3095
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3096 item = [menu addItemWithTitle:NSLocalizedString(@"Hide Others", nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3097 action:@selector(hideOtherApplications:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3098 keyEquivalent:@"h"];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3099 [item setKeyEquivalentModifierMask:NSCommandKeyMask | NSAlternateKeyMask];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3100 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3101
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3102 item = [menu addItemWithTitle:NSLocalizedString(@"Show All", nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3103 action:@selector(unhideAllApplications:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3104 keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3105 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3106
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3107 [menu addItem:[NSMenuItem separatorItem]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3108
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3109 item = [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Quit", nil), applicationName]
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3110 action:@selector(terminate:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3111 keyEquivalent:@"q"];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3112 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3113
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3114 [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
3115
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3116 return mainMenu;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
3117 }
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
3118
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
3119 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3120 * 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
3121 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3122 void API dw_main(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3123 {
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
3124 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
3125 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
3126 /* 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
3127 _dw_redraw(0, FALSE);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3128 [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
3129 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
3130 dw_mutex_unlock(DWRunMutex);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3131 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3132
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3133 /*
1528
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
3134 * 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
3135 */
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
3136 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
3137 {
1529
92bed442620a Didn't notice that [NSApplication stop] took a sender parameter on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1528
diff changeset
3138 [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
3139 _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
3140 }
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
3141
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
3142 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3143 * 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
3144 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3145 * 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
3146 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3147 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
3148 {
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3149 DWTID curr = pthread_self();
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3150
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3151 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
3152 {
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3153 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
3154 NSDate *until = [NSDate dateWithTimeIntervalSinceNow:(milliseconds/1000.0)];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3155
695
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3156 if(orig == (DWTID)-1)
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3157 {
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
3158 dw_mutex_lock(DWRunMutex);
695
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3159 DWThread = curr;
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3160 }
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
3161 /* 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
3162 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
3163 {
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
3164 /* Just loop */
695
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3165 }
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3166 if(orig == (DWTID)-1)
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3167 {
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3168 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
3169 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
3170 }
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3171 }
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3172 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
3173 {
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3174 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
3175 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3176 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3177
700
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3178 /* 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
3179 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
3180 {
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3181 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
3182 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
3183 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
3184 dequeue:YES];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3185 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
3186 {
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3187 [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
3188 [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
3189 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
3190 }
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
3191 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3192 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3193
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3194 /*
700
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3195 * 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
3196 */
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3197 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
3198 {
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
3199 DWTID curr = pthread_self();
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3200
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
3201 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
3202 {
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
3203 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
3204 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
3205 _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
3206 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
3207 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
3208 }
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
3209 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
3210 {
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
3211 _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
3212 }
700
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3213 }
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3214
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3215 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3216 * 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
3217 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3218 * 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
3219 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3220 void API dw_exit(int exitcode)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3221 {
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
3222 #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
3223 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
3224 [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
3225 #endif
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3226 exit(exitcode);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3227 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3228
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3229 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3230 * 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
3231 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3232 * ptr: Pointer to dynamic windows allocated
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3233 * memory to be free()'d.
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 void API dw_free(void *ptr)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3236 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3237 free(ptr);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3238 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3239
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3240 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3241 * 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
3242 * 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
3243 * OS/2 and Windows).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3244 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3245 char *dw_user_dir(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3246 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3247 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
3248
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3249 if(!_user_dir[0])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3250 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3251 char *home = getenv("HOME");
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3252
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3253 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
3254 strncpy(_user_dir, home, PATH_MAX);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3255 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3256 strcpy(_user_dir, "/");
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3257 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3258 return _user_dir;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3259 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3260
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3261 /*
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3262 * Returns a pointer to a static buffer which containes the
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3263 * private application data directory.
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3264 */
1384
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1383
diff changeset
3265 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
3266 {
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3267 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
3268 }
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3269
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3270 /*
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
3271 * 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
3272 * 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
3273 * 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
3274 * ...: 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
3275 */
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
3276 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
3277 {
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
3278 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
3279 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
3280
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
3281 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
3282 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
3283 va_end(args);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3284
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
3285 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
3286 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3287
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
3288 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3289 * 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
3290 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3291 * 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
3292 * 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
3293 * format: printf style format string.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3294 * ...: 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
3295 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3296 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
3297 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3298 int iResponse;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3299 NSString *button1 = @"OK";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3300 NSString *button2 = nil;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3301 NSString *button3 = nil;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3302 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
3303 char outbuf[1025] = {0};
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3304
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3305 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
3306 vsnprintf(outbuf, 1024, format, args);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3307 va_end(args);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3308
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3309 if(flags & DW_MB_OKCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3310 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3311 button2 = @"Cancel";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3312 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3313 else if(flags & DW_MB_YESNO)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3314 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3315 button1 = @"Yes";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3316 button2 = @"No";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3317 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3318 else if(flags & DW_MB_YESNOCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3319 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3320 button1 = @"Yes";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3321 button2 = @"No";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3322 button3 = @"Cancel";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3323 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3324
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3325 if(flags & DW_MB_ERROR)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3326 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3327 iResponse = (int)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3328 NSRunCriticalAlertPanel([ NSString stringWithUTF8String:title ],
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3329 [ 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
3330 button1, button2, button3);
936
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3331 }
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3332 else if(flags & DW_MB_INFORMATION)
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3333 {
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3334 iResponse = (int)
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3335 NSRunInformationalAlertPanel([ NSString stringWithUTF8String:title ],
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3336 [ 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
3337 button1, button2, button3);
936
4be0c9f963f8 Implement informational messagebox style on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 935
diff changeset
3338 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3339 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3340 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3341 iResponse = (int)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3342 NSRunAlertPanel([ NSString stringWithUTF8String:title ],
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3343 [ NSString stringWithUTF8String:outbuf ],
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3344 button1, button2, button3);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3345 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3346
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3347 switch(iResponse)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3348 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3349 case NSAlertDefaultReturn: /* user pressed OK */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3350 if(flags & DW_MB_YESNO || flags & DW_MB_YESNOCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3351 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3352 return DW_MB_RETURN_YES;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3353 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3354 return DW_MB_RETURN_OK;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3355 case NSAlertAlternateReturn: /* user pressed Cancel */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3356 if(flags & DW_MB_OKCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3357 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3358 return DW_MB_RETURN_CANCEL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3359 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3360 return DW_MB_RETURN_NO;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3361 case NSAlertOtherReturn: /* user pressed the third button */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3362 return DW_MB_RETURN_CANCEL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3363 case NSAlertErrorReturn: /* an error occurred */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3364 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3365 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3366 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3367 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3368
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3369 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3370 * 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
3371 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3372 * title: Title bar text for dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3373 * 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
3374 * ext: Default file extention.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3375 * 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
3376 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3377 * 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
3378 * the file path on success.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3379 *
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3380 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3381 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
3382 {
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3383 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
3384 char *file = NULL, *path = NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3385 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3386
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
3387 /* 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
3388 * 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
3389 */
1704
873304f581be Fix Unicode issues with the directory browser on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
3390 if(defpath && *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
3391 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3392 struct stat buf;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3393
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3394 /* 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
3395 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
3396 strcpy(temp, defpath);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3397
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3398 /* 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
3399 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
3400 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3401 /* 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
3402 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
3403 path = temp;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3404 else
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3405 file = temp;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3406 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3407 /* 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
3408 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
3409 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3410 unsigned long x = strlen(temp) - 1;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3411
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3412 /* 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
3413 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
3414 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3415 x--;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3416 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3417 if(temp[x] == '/')
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3418 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3419 temp[x] = 0;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3420 /* 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
3421 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
3422 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3423 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
3424 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3425 /* 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
3426 path = temp;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3427 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
3428 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3429 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3430 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3431 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3432 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3433
825
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3434 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
3435 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3436 /* Create the File Open Dialog class. */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3437 NSOpenPanel* openDlg = [NSOpenPanel openPanel];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3438
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3439 if(path)
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3440 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3441 SEL ssdu = NSSelectorFromString(@"setDirectoryURL");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3442
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3443 if([openDlg respondsToSelector:ssdu])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3444 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3445 IMP isdu = [openDlg methodForSelector:ssdu];
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3446 isdu(openDlg, ssdu, [NSURL fileURLWithPath:[NSString stringWithUTF8String:path]]);
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3447 }
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3448 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3449
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3450 /* 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
3451 if(flags == DW_FILE_OPEN)
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3452 {
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3453 [openDlg setCanChooseFiles:YES];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3454 [openDlg setCanChooseDirectories:NO];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3455 }
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3456 else
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3457 {
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3458 [openDlg setCanChooseFiles:NO];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3459 [openDlg setCanChooseDirectories:YES];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
3460 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3461
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
3462 /* Handle file types */
1704
873304f581be Fix Unicode issues with the directory browser on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
3463 if(ext && *ext)
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
3464 {
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
3465 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
3466 [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
3467 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3468
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3469 /* Disable multiple selection */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3470 [openDlg setAllowsMultipleSelection:NO];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3471
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3472 /* Display the dialog. If the OK button was pressed,
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3473 * process the files.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3474 */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3475 if([openDlg runModal] == NSOKButton)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3476 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3477 /* Get an array containing the full filenames of all
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3478 * files and directories selected.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3479 */
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
3480 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
3481 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
3482 if(fileName)
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3483 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3484 char *ret = strdup([ fileName UTF8String ]);
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3485 DW_LOCAL_POOL_OUT;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3486 return ret;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3487 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3488 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3489 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3490 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3491 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3492 /* Create the File Save Dialog class. */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3493 NSSavePanel* saveDlg = [NSSavePanel savePanel];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3494
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3495 if(path)
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3496 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3497 SEL ssdu = NSSelectorFromString(@"setDirectoryURL");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3498
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3499 if([saveDlg respondsToSelector:ssdu])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3500 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3501 IMP isdu = [saveDlg methodForSelector:ssdu];
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3502 isdu(saveDlg, ssdu, [NSURL fileURLWithPath:[NSString stringWithUTF8String:path]]);
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3503 }
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3504 }
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
3505 if(file)
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3506 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3507 SEL ssnfsv = NSSelectorFromString(@"setNameFieldStringValue");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3508
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3509 if([saveDlg respondsToSelector:ssnfsv])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3510 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3511 IMP isnfsv = [saveDlg methodForSelector:ssnfsv];
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3512 isnfsv(saveDlg, ssnfsv, [NSString stringWithUTF8String:file]);
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3513 }
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3514 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3515
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3516 /* Enable the creation of directories in the dialog. */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3517 [saveDlg setCanCreateDirectories:YES];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3518
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
3519 /* Handle file types */
1704
873304f581be Fix Unicode issues with the directory browser on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
3520 if(ext && *ext)
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
3521 {
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
3522 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
3523 [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
3524 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3525
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3526 /* Display the dialog. If the OK button was pressed,
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3527 * process the files.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3528 */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3529 if([saveDlg runModal] == NSFileHandlingPanelOKButton)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3530 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3531 /* Get an array containing the full filenames of all
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3532 * files and directories selected.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3533 */
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
3534 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
3535 if(fileName)
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3536 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3537 char *ret = strdup([ fileName UTF8String ]);
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3538 DW_LOCAL_POOL_OUT;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3539 return ret;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3540 }
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3541 }
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3542 }
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
3543 DW_LOCAL_POOL_OUT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3544 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3545 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3546
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3547 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3548 * 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
3549 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3550 * None.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3551 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3552 * 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
3553 * be converted to text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3554 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3555 char *dw_clipboard_get_text()
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3556 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3557 NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3558 NSString *str = [pasteboard stringForType:NSStringPboardType];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3559 if(str != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3560 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3561 return strdup([ str UTF8String ]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3562 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3563 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3564 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3565
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3566 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3567 * 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
3568 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3569 * Text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3570 */
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
3571 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
3572 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3573 NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3574 SEL scc = NSSelectorFromString(@"clearContents");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3575
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3576 if([pasteboard respondsToSelector:scc])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3577 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3578 IMP icc = [pasteboard methodForSelector:scc];
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
3579 icc(pasteboard, scc);
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
3580 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3581
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3582 [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
3583 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3584
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3585
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3586 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3587 * Allocates and initializes a dialog struct.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3588 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3589 * 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
3590 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3591 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
3592 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3593 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
3594
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3595 if(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3596 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3597 tmp->eve = dw_event_new();
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3598 dw_event_reset(tmp->eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3599 tmp->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3600 tmp->done = FALSE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3601 tmp->result = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3602 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3603 return tmp;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3604 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3605
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3606 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3607 * 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
3608 * initial called of dw_dialog_wait().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3609 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3610 * 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
3611 * 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
3612 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3613 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
3614 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3615 dialog->result = result;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3616 dw_event_post(dialog->eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3617 dialog->done = TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3618 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3619 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3620
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3621 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3622 * 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
3623 * 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
3624 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3625 * 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
3626 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3627 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
3628 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3629 void *tmp;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3630
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3631 while(!dialog->done)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3632 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3633 _dw_main_iteration([NSDate dateWithTimeIntervalSinceNow:0.01]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3634 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3635 dw_event_close(&dialog->eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3636 tmp = dialog->result;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3637 free(dialog);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3638 return tmp;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3639 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3640
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3641 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3642 * 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
3643 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3644 * 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
3645 * 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
3646 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3647 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
3648 {
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
3649 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
3650 DW_MUTEX_LOCK;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3651 DWBox *view = [[DWBox alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3652 Box *newbox = [view box];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3653 memset(newbox, 0, sizeof(Box));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3654 newbox->pad = pad;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3655 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
3656 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3657 return view;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3658 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3659
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3660 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3661 * 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
3662 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3663 * 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
3664 * 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
3665 * 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
3666 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3667 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
3668 {
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
3669 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
3670 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
3671 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
3672
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
3673 [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
3674 [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
3675 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
3676 [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
3677 [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
3678 return groupbox;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3679 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3680
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3681 /*
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3682 * Create a new scrollable Box to be packed.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3683 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3684 * 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
3685 * 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
3686 */
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
3687 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
3688 {
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3689 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
3690 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
3691 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
3692 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
3693 [scrollbox setHasVerticalScroller:YES];
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3694 [scrollbox setHasHorizontalScroller:YES];
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3695 [scrollbox setBorderType:NSNoBorder];
838
8e0405435d0a Minor scrollbox fixes...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 837
diff changeset
3696 [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
3697 [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
3698 [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
3699 [tmpbox autorelease];
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3700 return scrollbox;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3701 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3702
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3703 /*
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3704 * 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
3705 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3706 * handle: Handle to the scrollbox to be queried.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3707 * orient: The vertical or horizontal scrollbar.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3708 */
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
3709 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
3710 {
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
3711 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
3712 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
3713 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
3714 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
3715 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
3716 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
3717 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
3718 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3719 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
3720 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
3721 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3722 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
3723 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3724 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
3725 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
3726 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3727 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
3728 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3729 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
3730 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3731 return val;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3732 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3733
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3734 /*
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3735 * 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
3736 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3737 * handle: Handle to the scrollbox to be queried.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3738 * orient: The vertical or horizontal scrollbar.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3739 */
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3740 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
3741 {
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
3742 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
3743 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
3744 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
3745 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
3746 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3747 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
3748 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3749 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
3750 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3751 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
3752 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
3753 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
3754 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3755
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3756 /* Return the handle to the text object */
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3757 id _text_handle(id object)
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3758 {
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3759 if([object isMemberOfClass:[ DWSpinButton class]])
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3760 {
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3761 DWSpinButton *spinbutton = object;
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3762 object = [spinbutton textfield];
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3763 }
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3764 if([object isMemberOfClass:[ NSBox class]])
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3765 {
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3766 NSBox *box = object;
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3767 id content = [box contentView];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3768
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3769 if([content isMemberOfClass:[ DWText class]])
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3770 {
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3771 object = content;
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3772 }
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3773 }
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3774 return object;
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3775 }
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3776
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3777 /* 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
3778 * These are the general rules for widget sizes:
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3779 *
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
3780 * 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
3781 * 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
3782 * 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
3783 * 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
3784 * 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
3785 * 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
3786 * 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
3787 */
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3788 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
3789 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3790 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
3791 NSString *nsstr = nil;
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3792 id object = _text_handle(handle);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3793
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3794 /* 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
3795 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
3796 {
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3797 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
3798 {
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3799 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
3800 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
3801 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
3802 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
3803 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
3804 break;
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3805 default:
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3806 {
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3807 NSImage *image = [object image];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3808
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3809 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
3810 {
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3811 /* 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
3812 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
3813 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
3814 thisheight = (int)size.height;
1432
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3815 if([object isBordered])
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3816 {
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3817 extrawidth = 4;
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3818 extraheight = 4;
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
3819 }
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3820 }
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3821 else
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3822 {
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3823 /* 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
3824 nsstr = [object title];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3825
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3826 if([object isBordered])
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3827 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3828 extrawidth = 30;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3829 extraheight = 8;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3830 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3831 else
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3832 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3833 extrawidth = 8;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3834 extraheight = 4;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3835 }
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3836 }
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
3837 break;
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3838 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3839 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3840 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3841 /* If the control is an entryfield set width to 150 */
1791
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3842 else if([object isKindOfClass:[ NSTextField class ]])
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3843 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3844 NSFont *font = [object font];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3845
1791
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3846 if([object isEditable])
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3847 {
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3848 /* Spinbuttons don't need to be as wide */
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3849 if([object isMemberOfClass:[ DWSpinButton class]])
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3850 thiswidth = 50;
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3851 else
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3852 thiswidth = 150;
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3853 /* Spinbuttons don't need to be as wide */
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3854 if([object isMemberOfClass:[ DWComboBox class]])
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3855 extraheight = 4;
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3856 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3857 else
1791
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
3858 nsstr = [object stringValue];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3859
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3860 if(font)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
3861 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
3862 }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3863 /* 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
3864 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
3865 [ object isMemberOfClass:[DWSlider class] ])
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3866 {
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
3867 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
3868 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
3869 }
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
3870 /* 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
3871 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
3872 {
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
3873 if([object vertical])
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3874 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3875 thiswidth = 14;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3876 thisheight = 100;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3877 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3878 else
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3879 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3880 thiswidth = 100;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3881 thisheight = 14;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3882 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
3883 }
1421
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3884 /* Handle bitmap size */
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3885 else if([ object isMemberOfClass:[NSImageView class] ])
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3886 {
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3887 NSImage *image = [object image];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3888
1421
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3889 if(image)
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3890 {
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3891 NSSize size = [image size];
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3892 thiswidth = (int)size.width;
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3893 thisheight = (int)size.height;
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3894 }
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
3895 }
1533
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3896 /* 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
3897 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
3898 {
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3899 NSCell *cell = [object cell];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3900
1533
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3901 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
3902 {
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3903 NSSize size = [cell cellSize];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3904
1533
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3905 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
3906 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
3907 }
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3908 }
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3909 /* MLE and Container */
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3910 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
3911 [ object isMemberOfClass:[DWContainer class] ])
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3912 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3913 NSSize size;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3914
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3915 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
3916 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3917 NSScrollView *sv = [object scrollview];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3918 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
3919 BOOL hscroll = [sv hasHorizontalScroller];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3920
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
3921 /* 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
3922 if(!hscroll)
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3923 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3924 [[object textContainer] setWidthTracksTextView:NO];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3925 [[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
3926 [object setHorizontallyResizable:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3927 [sv setHasHorizontalScroller:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3928 }
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
3929 /* 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
3930 [object sizeToFit];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3931 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
3932 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
3933 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
3934 /* 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
3935 if(!hscroll)
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3936 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3937 [[object textContainer] setWidthTracksTextView:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3938 [sv setHasHorizontalScroller:NO];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3939
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
3940 /* 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
3941 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
3942 {
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
3943 NSSize max = [object maxSize];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3944
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
3945 /* 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
3946 [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
3947 /* 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
3948 [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
3949 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
3950 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
3951 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
3952 [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
3953 }
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3954 }
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3955 [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
3956 /* 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
3957 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
3958 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
3959 }
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3960 else
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
3961 size = [object getsize];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3962
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3963 thiswidth = size.width;
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3964 thisheight = size.height;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3965
1549
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3966 if(thiswidth < _DW_SCROLLED_MIN_WIDTH)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3967 thiswidth = _DW_SCROLLED_MIN_WIDTH;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3968 if(thiswidth > _DW_SCROLLED_MAX_WIDTH)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3969 thiswidth = _DW_SCROLLED_MAX_WIDTH;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3970 if(thisheight < _DW_SCROLLED_MIN_HEIGHT)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3971 thisheight = _DW_SCROLLED_MIN_HEIGHT;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3972 if(thisheight > _DW_SCROLLED_MAX_HEIGHT)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3973 thisheight = _DW_SCROLLED_MAX_HEIGHT;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
3974 }
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3975 /* Tree */
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
3976 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
3977 {
1566
035bc006afbe Experimental change... halfway between min and max for tree controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1564
diff changeset
3978 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
3979 thisheight = (int)((_DW_SCROLLED_MAX_HEIGHT + _DW_SCROLLED_MIN_HEIGHT)/2);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3980 }
1533
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
3981 /* 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
3982 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
3983 nsstr = [object stringValue];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3984
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3985 /* If we have a string...
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
3986 * 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
3987 */
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
3988 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
3989 dw_font_text_extents_get(object, NULL, (char *)[nsstr UTF8String], &thiswidth, &thisheight);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3990
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
3991 /* 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
3992 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
3993 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3994 id border = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3995
1778
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
3996 extrawidth = 10;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3997
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
3998 /* Handle status bar field */
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
3999 if([border isMemberOfClass:[ NSBox class ] ])
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
4000 {
1778
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
4001 extrawidth += 2;
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
4002 extraheight = 8;
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
4003 }
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
4004 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4005
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4006 /* Set the requested sizes */
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4007 if(width)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4008 *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
4009 if(height)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4010 *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
4011 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4012
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4013 /* 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
4014 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
4015 {
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
4016 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
4017 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
4018 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
4019 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
4020 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
4021 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
4022 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
4023 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
4024
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4025 /*
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4026 * 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
4027 * 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
4028 */
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4029 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
4030 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4031 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
4032 return;
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4033 }
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
4034
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
4035 /* 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
4036 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
4037 {
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
4038 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
4039 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
4040 }
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
4041 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
4042 {
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
4043 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
4044 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
4045 }
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
4046
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
4047 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
4048 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
4049 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
4050
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
4051 /* 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
4052 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
4053 [ 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
4054 [ 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
4055 {
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
4056 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
4057 }
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
4058
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
4059 /* Do some sanity bounds checking */
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4060 if(!thisitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4061 thisbox->count = 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
4062 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
4063 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
4064 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
4065 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
4066
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
4067 /* Duplicate the existing data */
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4068 tmpitem = calloc(sizeof(Item), (thisbox->count+1));
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
4069
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
4070 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
4071 {
1079
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
4072 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
4073 x++;
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
4074 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
4075 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
4076 }
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
4077
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
4078 /* 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
4079 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
4080 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
4081 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
4082 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
4083
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
4084 /* 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
4085 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
4086 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
4087 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
4088 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4089 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
4090 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
4091 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
4092 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
4093
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4094 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
4095 }
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
4096
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
4097 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
4098 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
4099 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
4100 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
4101 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
4102 tmpitem[index].vsize = vsize ? SIZEEXPAND : SIZESTATIC;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4103
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4104 /* 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
4105 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
4106 _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
4107
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
4108 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
4109
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
4110 /* 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
4111 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
4112
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
4113 /* 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
4114 [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
4115 /* 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
4116 * 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
4117 */
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
4118 [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
4119 /* 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
4120 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
4121 {
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
4122 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
4123
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
4124 /* 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
4125 * 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
4126 */
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
4127 [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
4128 }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4129 /* Queue a redraw on the top-level window */
1673
db393069b27d Fix packing padding not triggering automatic redraws on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1672
diff changeset
4130 _dw_redraw([view 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
4131
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
4132 /* Free the old data */
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4133 if(thisitem)
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
4134 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
4135 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
4136 }
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
4137
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
4138 /*
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4139 * Remove windows (widgets) from the box they are packed into.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4140 * Parameters:
1679
e19b93a8229b More comment cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1678
diff changeset
4141 * handle: Window handle of the packed item to be removed.
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4142 * Returns:
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4143 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4144 */
1769
d81bebc5c8cc Mark and I decided to change dw_box_remove*() to dw_box_unpack*() for consistency.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1764
diff changeset
4145 int API dw_box_unpack(HWND handle)
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4146 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4147 int _locked_by_me = FALSE;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4148 DW_LOCAL_POOL_IN;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4149 DW_MUTEX_LOCK;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4150 id object = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4151
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4152 if([object isKindOfClass:[NSView class]] || [object isKindOfClass:[NSControl class]])
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4153 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4154 DWBox *parent = (DWBox *)[object superview];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4155
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4156 /* Some controls are embedded in scrollviews...
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4157 * so get the parent of the scrollview in that case.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4158 */
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4159 if(([object isKindOfClass:[NSTableView class]] || [object isMemberOfClass:[DWMLE class]])
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4160 && [parent isMemberOfClass:[NSClipView class]])
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4161 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4162 object = [parent superview];
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4163 parent = (DWBox *)[object superview];
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4164 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4165
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4166 if([parent isKindOfClass:[DWBox class]] || [parent isKindOfClass:[DWGroupBox class]])
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4167 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4168 id window = [object window];
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4169 Box *thisbox = [parent box];
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4170 int z, index = -1;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4171 Item *tmpitem = NULL, *thisitem = thisbox->items;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4172
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4173 if(!thisitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4174 thisbox->count = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4175
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4176 for(z=0;z<thisbox->count;z++)
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4177 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4178 if(thisitem[z].hwnd == object)
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4179 index = z;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4180 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4181
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4182 if(index == -1)
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4183 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4184 DW_MUTEX_UNLOCK;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4185 DW_LOCAL_POOL_OUT;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4186 return DW_ERROR_GENERAL;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4187 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4188
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4189 [object retain];
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4190 [object removeFromSuperview];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4191
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4192 if(thisbox->count > 1)
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4193 {
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4194 tmpitem = calloc(sizeof(Item), (thisbox->count-1));
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4195
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4196 /* Copy all but the current entry to the new list */
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4197 for(z=0;z<index;z++)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4198 {
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4199 tmpitem[z] = thisitem[z];
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4200 }
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4201 for(z=index+1;z<thisbox->count;z++)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4202 {
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4203 tmpitem[z-1] = thisitem[z];
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4204 }
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4205 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4206
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4207 thisbox->items = tmpitem;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4208 if(thisitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4209 free(thisitem);
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4210 if(tmpitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4211 thisbox->count--;
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4212 else
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4213 thisbox->count = 0;
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4214 /* Queue a redraw on the top-level window */
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4215 _dw_redraw(window, TRUE);
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4216 }
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4217 }
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4218 DW_MUTEX_UNLOCK;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4219 DW_LOCAL_POOL_OUT;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4220 return DW_ERROR_NONE;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4221 }
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4222
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4223 /*
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4224 * Remove windows (widgets) from a box at an arbitrary location.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4225 * Parameters:
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4226 * box: Window handle of the box to be removed from.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4227 * index: 0 based index of packed items.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4228 * Returns:
1679
e19b93a8229b More comment cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1678
diff changeset
4229 * Handle to the removed item on success, 0 on failure or padding.
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4230 */
1769
d81bebc5c8cc Mark and I decided to change dw_box_remove*() to dw_box_unpack*() for consistency.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1764
diff changeset
4231 HWND API dw_box_unpack_at_index(HWND box, int index)
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4232 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4233 int _locked_by_me = FALSE;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4234 DW_LOCAL_POOL_IN;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4235 DW_MUTEX_LOCK;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4236 DWBox *parent = (DWBox *)box;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4237 id object = nil;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4238
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4239 if([parent isKindOfClass:[DWBox class]] || [parent isKindOfClass:[DWGroupBox class]])
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4240 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4241 id window = [parent window];
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4242 Box *thisbox = [parent box];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4243
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4244 if(thisbox && index > -1 && index < thisbox->count)
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4245 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4246 int z;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4247 Item *tmpitem = NULL, *thisitem = thisbox->items;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4248
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4249 object = thisitem[index].hwnd;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4250
1672
42890a2b8d3e Fix minor issues with dw_box_remove_at_index() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1671
diff changeset
4251 if(object)
42890a2b8d3e Fix minor issues with dw_box_remove_at_index() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1671
diff changeset
4252 {
42890a2b8d3e Fix minor issues with dw_box_remove_at_index() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1671
diff changeset
4253 [object retain];
42890a2b8d3e Fix minor issues with dw_box_remove_at_index() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1671
diff changeset
4254 [object removeFromSuperview];
42890a2b8d3e Fix minor issues with dw_box_remove_at_index() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1671
diff changeset
4255 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4256
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4257 if(thisbox->count > 1)
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4258 {
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4259 tmpitem = calloc(sizeof(Item), (thisbox->count-1));
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4260
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4261 /* Copy all but the current entry to the new list */
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4262 for(z=0;thisitem && z<index;z++)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4263 {
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4264 tmpitem[z] = thisitem[z];
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4265 }
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4266 for(z=index+1;z<thisbox->count;z++)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4267 {
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4268 tmpitem[z-1] = thisitem[z];
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4269 }
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4270 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4271
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4272 thisbox->items = tmpitem;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4273 if(thisitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4274 free(thisitem);
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4275 if(tmpitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4276 thisbox->count--;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4277 else
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4278 thisbox->count = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4279
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4280 /* Queue a redraw on the top-level window */
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4281 _dw_redraw(window, TRUE);
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4282 }
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4283 }
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4284 DW_MUTEX_UNLOCK;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4285 DW_LOCAL_POOL_OUT;
1672
42890a2b8d3e Fix minor issues with dw_box_remove_at_index() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1671
diff changeset
4286 return object;
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4287 }
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4288
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4289 /*
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4290 * 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
4291 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4292 * box: Window handle of the box to be packed into.
1678
896f377a47c7 Added exports for building with MinGW on Windows and Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1673
diff changeset
4293 * item: Window handle of the item to pack.
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
4294 * 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
4295 * 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
4296 * 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
4297 * 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
4298 * 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
4299 * 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
4300 */
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4301 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
4302 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4303 _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
4304 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4305
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4306 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4307 * 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
4308 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4309 * box: Window handle of the box to be packed into.
1678
896f377a47c7 Added exports for building with MinGW on Windows and Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1673
diff changeset
4310 * item: Window handle of the item to pack.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4311 * 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
4312 * 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
4313 * 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
4314 * 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
4315 * 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
4316 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4317 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
4318 {
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
4319 /* 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
4320 * 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
4321 */
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4322 _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
4323 }
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4324
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4325 /*
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4326 * 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
4327 * Parameters:
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4328 * box: Window handle of the box to be packed into.
1678
896f377a47c7 Added exports for building with MinGW on Windows and Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1673
diff changeset
4329 * item: Window handle of the item to pack.
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4330 * 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
4331 * 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
4332 * 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
4333 * 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
4334 * 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
4335 */
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4336 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
4337 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4338 _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
4339 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4340
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4341 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
4342 {
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
4343 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
4344 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
4345 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
4346 [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
4347 }
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
4348 [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
4349 [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
4350 [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
4351 [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
4352 [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
4353 /* 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
4354 [[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
4355 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
4356 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
4357 [[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
4358 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4359 return button;
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4360 }
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4361
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4362 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4363 * 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
4364 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4365 * 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
4366 * 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
4367 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4368 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
4369 {
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4370 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
4371 [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
4372 [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
4373 [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
4374 [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
4375 [[button cell] setControlTint:NSBlueControlTint];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4376 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4377 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4378
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4379 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4380 * 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
4381 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4382 * 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
4383 * 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
4384 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4385 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
4386 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4387 DWEntryField *entry = [[DWEntryField alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4388 [entry setStringValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4389 [entry setTag:cid];
1712
daa59fc8d6e5 Disable wrapping on entryfields and static text on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
4390 [[entry cell] setScrollable:YES];
daa59fc8d6e5 Disable wrapping on entryfields and static text on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
4391 [[entry cell] setWraps:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4392 return entry;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4393 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4394
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4395 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4396 * 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
4397 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4398 * 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
4399 * 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
4400 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4401 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
4402 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4403 DWEntryFieldPassword *entry = [[DWEntryFieldPassword alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4404 [entry setStringValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4405 [entry setTag:cid];
1712
daa59fc8d6e5 Disable wrapping on entryfields and static text on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
4406 [[entry cell] setScrollable:YES];
daa59fc8d6e5 Disable wrapping on entryfields and static text on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
4407 [[entry cell] setWraps:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4408 return entry;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4409 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4410
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4411 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4412 * Sets the entryfield character limit.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4413 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4414 * 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
4415 * 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
4416 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4417 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
4418 {
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
4419 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
4420 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
4421
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
4422 [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
4423 [[entry cell] setFormatter:formatter];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4424 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4425
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4426 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4427 * 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
4428 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4429 * 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
4430 * 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
4431 */
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
4432 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
4433 {
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
4434 NSBundle *bundle = [NSBundle mainBundle];
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
4435 NSString *respath = [bundle resourcePath];
1770
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
4436 NSString *filepath = [respath stringByAppendingFormat:@"/%lu.png", resid];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
4437 NSImage *image = [[NSImage alloc] initWithContentsOfFile:filepath];
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
4438 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
4439 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
4440 {
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
4441 [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
4442 }
1396
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
4443 if(text)
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
4444 [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
4445 [image release];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
4446 return button;
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 * 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
4451 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4452 * 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
4453 * 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
4454 * 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
4455 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4456 * (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
4457 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4458 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
4459 {
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
4460 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
4461
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
4462 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
4463 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
4464
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
4465 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
4466 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
4467 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
4468 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
4469 }
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
4470 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
4471 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
4472 {
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
4473 [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
4474 }
1396
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
4475 if(text)
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
4476 [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
4477 [image release];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
4478 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4479 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4480
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 * 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
4483 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4484 * 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
4485 * 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
4486 * data: The contents of the image
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4487 * (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
4488 * len: length of str
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4489 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4490 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
4491 {
760
2fb17622a455 Possible fix for exception in dw_bitmapbutton_new_from_data()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 755
diff changeset
4492 NSData *thisdata = [NSData dataWithBytes:data length:len];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
4493 NSImage *image = [[NSImage alloc] initWithData:thisdata];
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
4494 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
4495 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
4496 {
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
4497 [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
4498 }
1396
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
4499 if(text)
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
4500 [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
4501 [image release];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
4502 return button;
650
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4506 * 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
4507 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4508 * 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
4509 * 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
4510 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4511 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
4512 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4513 DWSpinButton *spinbutton = [[DWSpinButton alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4514 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
4515 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
4516 [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
4517 [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
4518 [stepper setMinValue:-65536];
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
4519 [stepper setMaxValue:65536];
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
4520 [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
4521 [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
4522 return spinbutton;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4523 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4524
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4525 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4526 * Sets the spinbutton value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4527 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4528 * 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
4529 * position: Current value of the spinbutton.
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 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
4532 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4533 DWSpinButton *spinbutton = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4534 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
4535 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
4536 [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
4537 [textfield takeIntValueFrom:stepper];
650
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4540 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4541 * Sets the spinbutton limits.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4542 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4543 * 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
4544 * upper: Upper limit.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4545 * lower: Lower limit.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4546 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4547 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
4548 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4549 DWSpinButton *spinbutton = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4550 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
4551 [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
4552 [stepper setMaxValue:(double)upper];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4553 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4554
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4555 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4556 * 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
4557 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4558 * 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
4559 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4560 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
4561 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
4562 DWSpinButton *spinbutton = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4563 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
4564 return (long)[stepper integerValue];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4565 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4566
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4567 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4568 * 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
4569 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4570 * 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
4571 * 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
4572 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4573 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
4574 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4575 DWButton *button = _button_new(text, cid);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4576 [button setButtonType:NSRadioButton];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4577 return button;
650
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4581 * 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
4582 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4583 * 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
4584 * increments: Number of increments available.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4585 * 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
4586 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4587 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
4588 {
704
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4589 DWSlider *slider = [[DWSlider alloc] init];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4590 [slider setMaxValue:(double)increments];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4591 [slider setMinValue:0];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4592 [slider setContinuous:YES];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4593 [slider setTarget:slider];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4594 [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
4595 [slider setTag:cid];
704
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
4596 return slider;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4597 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4598
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4599 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4600 * Returns the position of the slider.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4601 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4602 * 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
4603 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4604 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
4605 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4606 DWSlider *slider = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4607 double val = [slider doubleValue];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4608 return (int)val;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4609 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4610
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4611 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4612 * Sets the slider position.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4613 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4614 * 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
4615 * 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
4616 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4617 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
4618 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4619 DWSlider *slider = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4620 [slider setDoubleValue:(double)position];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4621 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4622
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4623 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4624 * 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
4625 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4626 * 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
4627 * increments: Number of increments available.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4628 * 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
4629 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4630 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
4631 {
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
4632 DWScrollbar *scrollbar;
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4633 if(vertical)
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4634 {
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
4635 scrollbar = [[DWScrollbar alloc] init];
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4636 [scrollbar setVertical:YES];
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4637 }
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4638 else
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4639 {
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
4640 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
4641 }
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4642 [scrollbar setArrowsPosition:NSScrollerArrowsDefaultSetting];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4643 [scrollbar setTarget:scrollbar];
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4644 [scrollbar setAction:@selector(changed:)];
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4645 [scrollbar setRange:0.0 andVisible:0.0];
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4646 [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
4647 [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
4648 [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
4649 [scrollbar setTag:cid];
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4650 [scrollbar setEnabled:YES];
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
4651 return scrollbar;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4652 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4653
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4654 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4655 * Returns the position of the scrollbar.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4656 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4657 * 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
4658 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4659 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
4660 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4661 DWScrollbar *scrollbar = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4662 float range = [scrollbar range];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4663 float fresult = [scrollbar doubleValue] * range;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4664 return (int)fresult;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4665 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4666
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4667 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4668 * Sets the scrollbar position.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4669 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4670 * 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
4671 * 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
4672 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4673 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
4674 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4675 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
4676 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
4677 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
4678 double newpos = (double)position/(range-visible);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4679 [scrollbar setDoubleValue:newpos];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4680 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4681
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4682 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4683 * Sets the scrollbar range.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4684 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4685 * 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
4686 * range: Maximum range value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4687 * 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
4688 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4689 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
4690 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4691 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
4692 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
4693 [scrollbar setRange:(double)range andVisible:(double)visible];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4694 [scrollbar setKnobProportion:knob];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4695 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4696
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4697 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4698 * 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
4699 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4700 * 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
4701 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4702 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
4703 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4704 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
4705 [percent setStyle:NSProgressIndicatorBarStyle];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4706 [percent setBezeled:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4707 [percent setMaxValue:100];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4708 [percent setMinValue:0];
714
cf6246f86c04 Fixed the percent/progress indicators from always being indeterminate.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 713
diff changeset
4709 [percent incrementBy:1];
cf6246f86c04 Fixed the percent/progress indicators from always being indeterminate.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 713
diff changeset
4710 [percent setIndeterminate:NO];
1586
021d2966f84d Make sure the percent widget defaults to 0% on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1582
diff changeset
4711 [percent setDoubleValue:0];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4712 /*[percent setTag:cid]; Why doesn't this work? */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4713 return percent;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4714 }
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4717 * Sets the percent bar position.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4718 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4719 * 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
4720 * 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
4721 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4722 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
4723 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4724 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
4725
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
4726 /* 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
4727 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
4728 {
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
4729 [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
4730 [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
4731 }
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
4732 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
4733 {
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
4734 /* 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
4735 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
4736 {
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
4737 [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
4738 [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
4739 }
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
4740 [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
4741 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4742 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4743
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4744 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4745 * 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
4746 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4747 * 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
4748 * 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
4749 */
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 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
4751 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4752 DWButton *button = _button_new(text, cid);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4753 [button setButtonType:NSSwitchButton];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4754 [button setBezelStyle:NSRegularSquareBezelStyle];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4755 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4756 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4757
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4758 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4759 * Returns the state of the checkbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4760 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4761 * 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
4762 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4763 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
4764 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4765 DWButton *button = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4766 if([button state])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4767 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4768 return TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4769 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4770 return FALSE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4771 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4772
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4773 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4774 * Sets the state of the checkbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4775 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4776 * 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
4777 * 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
4778 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4779 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
4780 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4781 DWButton *button = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4782 if(value)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4783 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4784 [button setState:NSOnState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4785 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4786 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4787 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4788 [button setState:NSOffState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4789 }
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
4790
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4791 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4792
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
4793 /* 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
4794 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
4795 {
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4796 NSScrollView *scrollview = [[NSScrollView alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4797 DWContainer *cont = [[DWContainer alloc] init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4798
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
4799 [cont setScrollview:scrollview];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
4800 [scrollview setBorderType:NSBezelBorder];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
4801 [scrollview setHasVerticalScroller:YES];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
4802 [scrollview setAutohidesScrollers:YES];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4803
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4804 if(multi)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4805 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4806 [cont setAllowsMultipleSelection:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4807 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4808 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4809 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4810 [cont setAllowsMultipleSelection:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4811 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4812 [cont setDataSource:cont];
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
4813 [cont setDelegate:cont];
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
4814 [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
4815 [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
4816 [cont autorelease];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4817 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
4818 }
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
4819
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4820 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4821 * 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
4822 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4823 * 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
4824 * multi: Multiple select TRUE or FALSE.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4825 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
4826 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
4827 {
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
4828 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
4829 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4830 DWContainer *cont = _cont_new(cid, multi);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4831 [cont setHeaderView:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4832 int type = DW_CFA_STRING;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4833 [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
4834 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
4835 [column setEditable:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4836 [cont addTableColumn:column];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4837 [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
4838 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4839 return cont;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4840 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4841
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4842 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4843 * 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
4844 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4845 * 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
4846 * text: Text to append into listbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4847 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4848 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
4849 {
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
4850 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
4851 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4852 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4853
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4854 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4855 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4856 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4857
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4858 [combo addItemWithObjectValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4859 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4860 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
4861 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4862 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
4863 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
4864 NSArray *newrow = [NSArray arrayWithObject:nstr];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4865
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4866 [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
4867 /*[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
4868 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
4869 waitUntilDone:YES];*/
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
4870 [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
4871 [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
4872 }
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
4873 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4874 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4875
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4876 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4877 * 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
4878 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4879 * 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
4880 * text: Text to insert into listbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4881 * 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
4882 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4883 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
4884 {
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
4885 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
4886 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4887 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4888
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4889 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4890 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4891 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4892
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4893 [combo insertItemWithObjectValue:[ NSString stringWithUTF8String:text ] atIndex:pos];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4894 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4895 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
4896 {
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
4897 DWContainer *cont = handle;
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
4898 NSString *nstr = [ NSString stringWithUTF8String:text ];
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
4899 NSArray *newrow = [NSArray arrayWithObject:nstr];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4900
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
4901 [cont insertRow:newrow at:pos];
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
4902 [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
4903 [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
4904 }
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
4905 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4906 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4907
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4908 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4909 * 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
4910 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4911 * 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
4912 * 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
4913 * 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
4914 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4915 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
4916 {
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
4917 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
4918 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4919 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4920
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4921 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4922 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4923 DWComboBox *combo = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4924 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4925
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4926 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
4927 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4928 [combo addItemWithObjectValue:[ NSString stringWithUTF8String:text[z] ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4929 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4930 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4931 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
4932 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4933 DWContainer *cont = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4934 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4935
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4936 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
4937 {
1318
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
4938 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
4939 NSArray *newrow = [NSArray arrayWithObjects:nstr,nil];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4940
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4941 [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
4942 }
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
4943 [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
4944 [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
4945 }
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
4946 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4947 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4948
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4949 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4950 * 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
4951 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4952 * 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
4953 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4954 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
4955 {
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
4956 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
4957 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4958 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4959
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4960 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4961 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4962 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4963
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4964 [combo removeAllItems];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4965 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4966 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
4967 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4968 DWContainer *cont = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4969
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4970 [cont clear];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
4971 [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
4972 [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
4973 }
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
4974 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4975 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4976
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4977 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4978 * Returns the listbox's item count.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4979 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4980 * 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
4981 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4982 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
4983 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4984 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4985
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4986 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4987 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4988 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4989
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4990 return (int)[combo numberOfItems];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4991 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
4992 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
4993 {
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
4994 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
4995 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
4996 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
4997 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
4998 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
4999 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
5000 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5001 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5002 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5003
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5004 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5005 * 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
5006 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5007 * 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
5008 * top: Index to the top item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5009 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5010 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
5011 {
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
5012 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
5013 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5014 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5015
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5016 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5017 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5018 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5019
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5020 [combo scrollItemAtIndexToTop:top];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5021 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5022 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
5023 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5024 DWContainer *cont = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5025
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5026 [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
5027 }
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
5028 DW_MUTEX_UNLOCK;
650
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5032 * 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
5033 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5034 * 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
5035 * 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
5036 * 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
5037 * 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
5038 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5039 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
5040 {
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
5041 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
5042 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5043 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5044
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5045 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5046 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5047 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
5048 int count = (int)[combo numberOfItems];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5049
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
5050 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
5051 {
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
5052 *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
5053 }
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
5054 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
5055 {
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
5056 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
5057 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
5058 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5059 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5060 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
5061 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5062 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
5063 int count = (int)[cont numberOfRowsInTableView:cont];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5064
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
5065 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
5066 {
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
5067 *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
5068 }
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
5069 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
5070 {
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
5071 NSString *nstr = [cont getRow:index and:0];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5072
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
5073 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
5074 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5075 }
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
5076 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5077 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5078
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5079 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5080 * 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
5081 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5082 * 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
5083 * 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
5084 * 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
5085 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5086 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
5087 {
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
5088 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
5089 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5090 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5091
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5092 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5093 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5094 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
5095 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
5096
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
5097 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
5098 {
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
5099 [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
5100 [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
5101 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5102 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5103 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
5104 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5105 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
5106 int count = (int)[cont numberOfRowsInTableView:cont];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5107
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
5108 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
5109 {
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
5110 NSString *nstr = [ NSString stringWithUTF8String:buffer ];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5111
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
5112 [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
5113 [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
5114 [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
5115 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5116 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5117 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5118 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5119
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5120 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5121 * 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
5122 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5123 * 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
5124 */
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
5125 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
5126 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5127 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5128
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5129 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5130 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5131 DWComboBox *combo = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5132 return (int)[combo indexOfSelectedItem];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5133 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5134 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
5135 {
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
5136 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
5137 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
5138 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
5139 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
5140 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
5141 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
5142 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5143 return -1;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5144 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5145
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5146 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5147 * 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
5148 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5149 * 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
5150 * 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
5151 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5152 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
5153 {
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
5154 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
5155 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5156 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
5157 int retval = -1;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5158
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5159 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
5160 {
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
5161 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
5162 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
5163 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
5164 if( where == -1 )
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
5165 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
5166 else
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
5167 result = [selected indexGreaterThanIndex:where];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5168
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5169 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
5170 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5171 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
5172 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5173 }
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
5174 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5175 return retval;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5176 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5177
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5178 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5179 * 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
5180 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5181 * 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
5182 * index: Item index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5183 * 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
5184 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5185 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
5186 {
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
5187 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
5188 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5189 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5190
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5191 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5192 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5193 DWComboBox *combo = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5194 if(state)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5195 [combo selectItemAtIndex:index];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5196 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5197 [combo deselectItemAtIndex:index];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5198 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5199 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
5200 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5201 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
5202 NSIndexSet *selected = [[NSIndexSet alloc] initWithIndex:(NSUInteger)index];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5203
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5204 [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
5205 [selected release];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5206 }
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
5207 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5208 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5209
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5210 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5211 * 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
5212 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5213 * 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
5214 * index: Item index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5215 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5216 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
5217 {
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
5218 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
5219 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5220 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5221
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5222 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5223 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5224 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5225
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5226 [combo removeItemAtIndex:index];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5227 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5228 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
5229 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5230 DWContainer *cont = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5231
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5232 [cont removeRow:index];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
5233 [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
5234 [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
5235 }
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
5236 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5237 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5238
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5239 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5240 * 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
5241 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5242 * 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
5243 * 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
5244 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5245 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
5246 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5247 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
5248 [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
5249 [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
5250 [combo setTag:cid];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5251 return combo;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5252 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5253
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5254 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5255 * 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
5256 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5257 * 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
5258 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5259 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
5260 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5261 DWMLE *mle = [[DWMLE alloc] init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5262 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
5263 NSSize size = [mle maxSize];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5264
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5265 size.width = size.height;
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5266 [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
5267 [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
5268 [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
5269 [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
5270 [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
5271 [scrollview setDocumentView:mle];
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5272 [mle setVerticallyResizable:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5273 [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
5274 [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
5275 /* [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
5276 [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
5277 return mle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5278 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5279
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5280 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5281 * 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
5282 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5283 * 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
5284 * buffer: Text buffer to be imported.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5285 * startpoint: Point to start entering text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5286 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5287 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
5288 {
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
5289 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
5290 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
5291 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
5292 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
5293 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
5294 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
5295 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
5296 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
5297 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
5298 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
5299 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
5300 [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
5301 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5302 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
5303 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5304
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5305 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5306 * Grabs text from an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5307 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5308 * 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
5309 * buffer: Text buffer to be exported.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5310 * startpoint: Point to start grabbing text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5311 * 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
5312 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5313 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
5314 {
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
5315 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
5316 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
5317 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
5318 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
5319 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
5320 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
5321 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
5322 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
5323 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5324 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5325
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5326 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5327 * Obtains information about an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5328 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5329 * 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
5330 * 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
5331 * 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
5332 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5333 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
5334 {
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
5335 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
5336 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
5337 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
5338 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
5339 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
5340 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
5341
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
5342 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
5343 *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
5344 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
5345 {
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
5346 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
5347 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
5348
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
5349 *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
5350 }
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
5351 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5352 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5353
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5354 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5355 * Deletes text from an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5356 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5357 * 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
5358 * startpoint: Point to start deleting text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5359 * 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
5360 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5361 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
5362 {
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
5363 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
5364 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
5365 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
5366 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
5367 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
5368 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
5369 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
5370 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
5371 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
5372 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
5373 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
5374 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
5375 [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
5376 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5377 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5378
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5379 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5380 * 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
5381 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5382 * 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
5383 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5384 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
5385 {
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
5386 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
5387 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
5388 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
5389 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
5390 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
5391 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
5392 [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
5393 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5394 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5395
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5396 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5397 * 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
5398 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5399 * 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
5400 * line: Line to be visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5401 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5402 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
5403 {
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
5404 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
5405 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
5406 DW_MUTEX_LOCK;
802
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
5407 NSTextStorage *ts = [mle textStorage];
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
5408 NSMutableString *ms = [ts mutableString];
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
5409 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
5410
802
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
5411 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
5412 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
5413
802
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
5414 if(line == numberOfLines)
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
5415 {
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
5416 [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
5417 }
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
5418 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5419 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5420
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5421 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5422 * 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
5423 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5424 * handle: Handle to the MLE.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5425 * 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
5426 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5427 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
5428 {
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
5429 DWMLE *mle = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5430 if(state)
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 [mle setEditable:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5433 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5434 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5435 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5436 [mle setEditable:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5437 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5438 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5439
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5440 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5441 * 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
5442 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5443 * handle: Handle to the MLE.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5444 * 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
5445 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5446 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
5447 {
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
5448 DWMLE *mle = handle;
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5449 NSScrollView *sv = [mle scrollview];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
5450
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
5451 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
5452 {
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5453 [[mle textContainer] setWidthTracksTextView:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5454 [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
5455 }
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
5456 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
5457 {
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5458 [[mle textContainer] setWidthTracksTextView:NO];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5459 [[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
5460 [mle setHorizontallyResizable:YES];
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5461 [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
5462 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5463 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5464
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5465 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5466 * 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
5467 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5468 * 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
5469 * point: Point to position cursor.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5470 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5471 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
5472 {
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
5473 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
5474 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
5475 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
5476 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
5477 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
5478 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
5479 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
5480 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
5481 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
5482 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
5483 [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
5484 [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
5485 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5486 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5487
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5488 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5489 * Finds text in an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5490 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5491 * 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
5492 * text: Text to search for.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5493 * point: Start point of search.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5494 * flags: Search specific flags.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5495 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5496 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
5497 {
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
5498 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
5499 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
5500 DW_MUTEX_LOCK;
888
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5501 NSTextStorage *ts = [mle textStorage];
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5502 NSMutableString *ms = [ts mutableString];
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5503 NSString *searchForMe = [NSString stringWithUTF8String:text];
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5504 NSRange searchRange = NSMakeRange(point, [ms length] - point);
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5505 NSRange range = NSMakeRange(NSNotFound, 0);
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5506 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
5507
888
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5508 if(ms)
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5509 {
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5510 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
5511 }
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
5512 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
5513 if(range.location != NSNotFound)
888
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5514 {
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5515 return -1;
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5516 }
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
5517 return (int)range.location;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5518 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5519
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5520 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5521 * Stops redrawing of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5522 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5523 * 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
5524 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5525 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
5526 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5527 /* 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
5528 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5529
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5530 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5531 * Resumes redrawing of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5532 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5533 * 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
5534 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5535 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
5536 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5537 /* 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
5538 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5539
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5540 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5541 * 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
5542 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5543 * 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
5544 * 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
5545 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5546 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
5547 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
5548 NSBox *border = [[NSBox alloc] init];
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
5549 NSTextField *textfield = dw_text_new(text, cid);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
5550
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
5551 [border setBorderType:NSGrooveBorder];
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
5552 //[border setBorderType:NSLineBorder];
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
5553 [border setTitlePosition:NSNoTitle];
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
5554 [border setContentView:textfield];
1778
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
5555 [border setContentViewMargins:NSMakeSize(1.5,1.5)];
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
5556 [textfield autorelease];
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
5557 [textfield setBackgroundColor:[NSColor clearColor]];
931
dfd84cefd80b Minor changes to vertical centering on (status) text fields on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 930
diff changeset
5558 [[textfield cell] setVCenter:YES];
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
5559 return border;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5560 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5561
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5562 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5563 * 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
5564 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5565 * 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
5566 * 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
5567 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5568 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
5569 {
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
5570 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
5571 [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
5572 [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
5573 [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
5574 [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
5575 [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
5576 [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
5577 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
5578 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5579 [[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
5580 }
1712
daa59fc8d6e5 Disable wrapping on entryfields and static text on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
5581 [[textfield cell] setWraps:NO];
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5582 return textfield;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5583 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5584
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5585 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5586 * 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
5587 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5588 * 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
5589 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5590 * 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
5591 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5592 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
5593 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5594 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
5595 [render setTag:cid];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5596 return render;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5597 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5598
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5599 /* Sets the current foreground drawing color.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5600 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5601 * red: red value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5602 * green: green value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5603 * blue: blue value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5604 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5605 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
5606 {
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
5607 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
5608 NSColor *newcolor;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5609 DW_LOCAL_POOL_IN;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5610
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5611 _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
5612
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5613 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
5614 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
5615 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
5616 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
5617 [oldcolor release];
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5618 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5619 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5620
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5621 /* Sets the current background drawing color.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5622 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5623 * red: red value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5624 * green: green value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5625 * blue: blue value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5626 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5627 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
5628 {
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
5629 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
5630 NSColor *newcolor;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5631 DW_LOCAL_POOL_IN;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5632
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
5633 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
5634 {
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5635 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
5636 }
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5637 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
5638 {
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5639 _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
5640
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5641 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
5642 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
5643 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
5644 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
5645 }
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
5646 [oldcolor release];
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5647 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5648 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5649
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5650 /* 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
5651 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5652 * value: current color
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5653 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5654 * 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
5655 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5656 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
5657 {
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5658 /* Create the Color Chooser Dialog class. */
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5659 DWColorChoose *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
5660 DWDialog *dialog;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
5661 DW_LOCAL_POOL_IN;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5662
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5663 if(![DWColorChoose sharedColorPanelExists])
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5664 {
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5665 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
5666 /* 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
5667 [colorDlg setContinuous:NO];
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5668 [colorDlg setTarget:colorDlg];
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5669 [colorDlg setAction:@selector(changeColor:)];
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5670 }
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5671 else
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5672 colorDlg = (DWColorChoose *)[DWColorChoose sharedColorPanel];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
5673
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5674 /* If someone is already waiting just return */
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5675 if([colorDlg dialog])
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5676 {
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5677 DW_LOCAL_POOL_OUT;
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5678 return value;
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5679 }
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5680
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5681 unsigned long tempcol = _get_color(value);
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5682 NSColor *color = [[NSColor colorWithDeviceRed: DW_RED_VALUE(tempcol)/255.0 green: DW_GREEN_VALUE(tempcol)/255.0 blue: DW_BLUE_VALUE(tempcol)/255.0 alpha: 1] retain];
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
5683 [colorDlg setColor:color];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
5684
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5685 dialog = dw_dialog_new(colorDlg);
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
5686 [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
5687 [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
5688
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5689 /* 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
5690 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
5691
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5692 /* 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
5693 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
5694 [color getRed:&red green:&green blue:&blue alpha:NULL];
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5695 value = DW_RGB((int)(red * 255), (int)(green *255), (int)(blue *255));
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
5696 DW_LOCAL_POOL_OUT;
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
5697 return value;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5698 }
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 /* 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
5701 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5702 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5703 * 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
5704 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5705 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5706 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5707 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
5708 {
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
5709 int _locked_by_me = FALSE;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5710 DW_LOCAL_POOL_IN;
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
5711 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5712 id image = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5713 if(pixmap)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5714 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5715 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
5716 [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
5717 [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
5718 graphicsContextWithGraphicsPort:[[NSGraphicsContext graphicsContextWithBitmapImageRep:image] graphicsPort] flipped:YES]];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5719 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5720 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5721 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5722 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
5723 {
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5724 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5725 DW_LOCAL_POOL_OUT;
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
5726 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
5727 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5728 _DWLastDrawable = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5729 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5730 NSBezierPath* aPath = [NSBezierPath bezierPath];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5731 [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
5732 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
5733 [color set];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5734
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5735 [aPath moveToPoint:NSMakePoint(x, y)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5736 [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
5737 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
5738 {
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
5739 [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
5740 }
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
5741 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
5742 {
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
5743 [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
5744 }
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
5745 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5746 DW_LOCAL_POOL_OUT;
650
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5749 /* 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
5750 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5751 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5752 * 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
5753 * x1: First X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5754 * y1: First Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5755 * x2: Second X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5756 * y2: Second Y coordinate.
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 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
5759 {
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
5760 int _locked_by_me = FALSE;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5761 DW_LOCAL_POOL_IN;
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
5762 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5763 id image = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5764 if(pixmap)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5765 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5766 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
5767 [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
5768 [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
5769 graphicsContextWithGraphicsPort:[[NSGraphicsContext graphicsContextWithBitmapImageRep:image] graphicsPort] flipped:YES]];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5770 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5771 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5772 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5773 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
5774 {
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5775 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5776 DW_LOCAL_POOL_OUT;
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
5777 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
5778 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5779 _DWLastDrawable = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5780 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5781 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
5782 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
5783 [color set];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5784
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5785 [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
5786 [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
5787 [aPath stroke];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5788
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
5789 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
5790 {
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
5791 [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
5792 }
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
5793 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
5794 {
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
5795 [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
5796 }
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
5797 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5798 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5799 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5800
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5801 /* 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
5802 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5803 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5804 * 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
5805 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5806 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5807 * text: Text to be displayed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5808 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5809 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
5810 {
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
5811 int _locked_by_me = FALSE;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5812 DW_LOCAL_POOL_IN;
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
5813 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
5814 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
5815 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
5816 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
5817 {
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
5818 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
5819 {
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
5820 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
5821 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
5822 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
5823 {
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5824 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5825 DW_LOCAL_POOL_OUT;
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
5826 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
5827 }
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
5828 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
5829 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
5830 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
5831 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
5832 {
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5833 [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
5834 }
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
5835 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
5836 {
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
5837 [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
5838 }
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
5839 [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
5840 [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
5841 [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
5842 }
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
5843 _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
5844 }
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
5845 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
5846 {
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
5847 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
5848 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
5849 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
5850 {
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
5851 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
5852 }
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
5853 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
5854 [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
5855 [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
5856 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
5857 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
5858 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
5859 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
5860 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
5861 {
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
5862 [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
5863 }
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
5864 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
5865 {
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
5866 [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
5867 }
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
5868 [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
5869 [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
5870 [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
5871 }
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
5872 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5873 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5874 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5875
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5876 /* 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
5877 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5878 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5879 * 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
5880 * text: Text to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5881 * 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
5882 * 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
5883 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5884 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
5885 {
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
5886 id object = handle;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5887 NSString *nstr;
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
5888 NSFont *font = nil;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5889 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
5890
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5891 nstr = [NSString stringWithUTF8String:text];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
5892
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
5893 /* 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
5894 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
5895 {
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
5896 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
5897 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
5898 }
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
5899 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
5900 /* 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
5901 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
5902 {
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
5903 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
5904 }
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
5905 /* 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
5906 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
5907 {
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
5908 [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
5909 }
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
5910 /* 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
5911 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
5912 [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
5913 /* 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
5914 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
5915 {
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
5916 *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
5917 }
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
5918 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
5919 {
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
5920 *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
5921 }
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5922 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5923 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5924
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
5925 /* 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
5926 * 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
5927 */
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
5928 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
5929 {
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
5930 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
5931 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
5932 [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
5933 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
5934 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
5935 }
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
5936
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5937 /* 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
5938 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5939 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5940 * 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
5941 * 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
5942 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5943 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5944 * width: Width of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5945 * height: Height of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5946 */
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
5947 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
5948 {
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
5949 int _locked_by_me = FALSE;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5950 DW_LOCAL_POOL_IN;
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
5951 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5952 id image = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5953 int z;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5954 if(pixmap)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5955 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5956 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
5957 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
5958 [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
5959 [NSGraphicsContext setCurrentContext:gc];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5960 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5961 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5962 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5963 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
5964 {
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
5965 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5966 DW_LOCAL_POOL_OUT;
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
5967 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
5968 }
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5969 [[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
5970 _DWLastDrawable = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5971 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5972 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
5973 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
5974 [color set];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5975
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5976 [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
5977 for(z=1;z<npoints;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5978 {
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
5979 [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
5980 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5981 [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
5982 if(flags & DW_DRAW_FILL)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5983 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5984 [aPath fill];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5985 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5986 [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
5987 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
5988 {
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
5989 [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
5990 }
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
5991 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
5992 {
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
5993 [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
5994 }
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
5995 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
5996 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5997 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5998
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5999 /* 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
6000 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6001 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6002 * 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
6003 * 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
6004 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6005 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6006 * width: Width of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6007 * height: Height of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6008 */
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
6009 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
6010 {
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
6011 int _locked_by_me = FALSE;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6012 DW_LOCAL_POOL_IN;
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
6013 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6014 id image = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6015 if(pixmap)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6016 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6017 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
6018 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
6019 [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
6020 [NSGraphicsContext setCurrentContext:gc];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6021 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6022 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6023 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6024 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
6025 {
a4f99795ff26 Abort drawing functions if we fail to lock focus on a render control.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 745
diff changeset
6026 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6027 DW_LOCAL_POOL_OUT;
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
6028 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
6029 }
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
6030 [[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
6031 _DWLastDrawable = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6032 }
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
6033 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
6034 [color set];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6035
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
6036 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
6037 [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
6038 else
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
6039 [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
6040 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
6041 {
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
6042 [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
6043 }
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
6044 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
6045 {
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
6046 [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
6047 }
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
6048 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6049 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6050 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6051
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6052 /* 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
6053 * Parameters:
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6054 * 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
6055 * 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
6056 * 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
6057 * 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
6058 * 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
6059 * 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
6060 * 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
6061 * 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
6062 * 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
6063 * 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
6064 */
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6065 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
6066 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6067 int _locked_by_me = FALSE;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6068 DW_LOCAL_POOL_IN;
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6069 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
6070 id image = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6071
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6072 if(pixmap)
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6073 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6074 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
6075 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
6076 [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
6077 [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
6078 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6079 else
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6080 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6081 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
6082 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6083 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6084 DW_LOCAL_POOL_OUT;
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6085 return;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6086 }
1527
9bab702bd6c1 A bunch of Mac drawing updates to correct issues and improve performance.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1523
diff changeset
6087 [[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
6088 _DWLastDrawable = handle;
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6089 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6090 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
6091 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
6092 [color set];
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6093
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
6094 /* 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
6095 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
6096 {
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
6097 [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
6098 }
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
6099 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
6100 {
1650
1f35129e4817 Improved arc drawing on the Mac using the same method as GDI+ on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1649
diff changeset
6101 double a1 = atan2((y1-yorigin), (x1-xorigin));
1f35129e4817 Improved arc drawing on the Mac using the same method as GDI+ on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1649
diff changeset
6102 double a2 = atan2((y2-yorigin), (x2-xorigin));
1f35129e4817 Improved arc drawing on the Mac using the same method as GDI+ on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1649
diff changeset
6103 double dx = xorigin - x1;
1f35129e4817 Improved arc drawing on the Mac using the same method as GDI+ on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1649
diff changeset
6104 double dy = yorigin - y1;
1f35129e4817 Improved arc drawing on the Mac using the same method as GDI+ on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1649
diff changeset
6105 double r = sqrt(dx*dx + dy*dy);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6106
1650
1f35129e4817 Improved arc drawing on the Mac using the same method as GDI+ on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1649
diff changeset
6107 /* Convert to degrees */
1f35129e4817 Improved arc drawing on the Mac using the same method as GDI+ on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1649
diff changeset
6108 a1 *= (180.0 / M_PI);
1f35129e4817 Improved arc drawing on the Mac using the same method as GDI+ on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1649
diff changeset
6109 a2 *= (180.0 / M_PI);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6110
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
6111 /* Prepare to draw */
1650
1f35129e4817 Improved arc drawing on the Mac using the same method as GDI+ on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1649
diff changeset
6112 [aPath appendBezierPathWithArcWithCenter:NSMakePoint(xorigin, yorigin)
1f35129e4817 Improved arc drawing on the Mac using the same method as GDI+ on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1649
diff changeset
6113 radius:r startAngle:a1 endAngle:a2];
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
6114 }
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
6115 /* 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
6116 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
6117 {
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
6118 [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
6119 }
9e477efbacca Added DW_DRAW_DEFAULT, DW_DRAW_FILL and DW_DRAW_FULL drawing flags.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1264
diff changeset
6120 /* 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
6121 [aPath stroke];
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6122 if(pixmap)
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6123 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6124 [NSGraphicsContext restoreGraphicsState];
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6125 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6126 else
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6127 {
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6128 [image unlockFocus];
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6129 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6130 DW_MUTEX_UNLOCK;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6131 DW_LOCAL_POOL_OUT;
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6132 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6133
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6134 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6135 * 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
6136 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6137 * 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
6138 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6139 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6140 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
6141 {
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
6142 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
6143 DW_MUTEX_LOCK;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6144 NSScrollView *scrollview = [[NSScrollView alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6145 DWTree *tree = [[DWTree alloc] init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6146
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
6147 [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
6148 [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
6149 [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
6150 [scrollview setAutohidesScrollers:YES];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6151
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
6152 [tree setAllowsMultipleSelection:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6153 [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
6154 [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
6155 [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
6156 [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
6157 [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
6158 [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
6159 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
6160 return tree;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6161 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6162
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6163 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6164 * 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
6165 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6166 * 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
6167 * 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
6168 * 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
6169 * icon: Handle to coresponding icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6170 * 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
6171 * itemdata: Item specific data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6172 */
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
6173 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
6174 {
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
6175 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
6176 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
6177 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
6178 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
6179 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
6180 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
6181 [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
6182 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
6183 [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
6184 [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
6185 [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
6186 [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
6187 [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
6188 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
6189 [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
6190 else
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
6191 [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
6192 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6193 return treenode;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6194 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6195
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6196 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6197 * 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
6198 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6199 * 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
6200 * 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
6201 * icon: Handle to coresponding icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6202 * 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
6203 * itemdata: Item specific data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6204 */
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
6205 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
6206 {
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
6207 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
6208 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6209
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6210 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6211 * 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
6212 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6213 * 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
6214 * 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
6215 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6216 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
6217 {
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
6218 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
6219 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
6220 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
6221 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
6222 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
6223 return strdup([nstr UTF8String]);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6224 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6225
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6226 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6227 * 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
6228 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6229 * 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
6230 * 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
6231 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6232 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
6233 {
881
7b2750744552 Implemented dw_tree_get_parent() for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 873
diff changeset
6234 int _locked_by_me = FALSE;
7b2750744552 Implemented dw_tree_get_parent() for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 873
diff changeset
6235 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
6236 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
6237
881
7b2750744552 Implemented dw_tree_get_parent() for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 873
diff changeset
6238 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
6239 parent = [tree parentForItem:item];
881
7b2750744552 Implemented dw_tree_get_parent() for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 873
diff changeset
6240 DW_MUTEX_UNLOCK;
7b2750744552 Implemented dw_tree_get_parent() for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 873
diff changeset
6241 return parent;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6242 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6243
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6244 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6245 * 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
6246 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6247 * 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
6248 * 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
6249 * 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
6250 * icon: Handle to coresponding icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6251 */
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
6252 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
6253 {
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 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
6255 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
6256 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
6257 NSMutableArray *array = (NSMutableArray *)item;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
6258 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6259
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
6260 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
6261 {
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
6262 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
6263 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
6264 [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
6265 [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
6266 }
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
6267 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
6268 {
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
6269 [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
6270 }
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
6271 [tree reloadData];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
6272 DW_LOCAL_POOL_OUT;
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
6273 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6274 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6275
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6276 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6277 * 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
6278 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6279 * 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
6280 * 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
6281 * 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
6282 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6283 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
6284 {
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
6285 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
6286 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
6287 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
6288 [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
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 * 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
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 tree containing the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6296 * 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
6297 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6298 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
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;
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
6301 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
6302 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
6303 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
6304 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
6305 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
6306 {
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
6307 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
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;
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
6310 return result;
650
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6314 * 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
6315 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6316 * 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
6317 * 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
6318 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6319 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
6320 {
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
6321 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
6322 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
6323 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
6324 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
6325 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
6326 {
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
6327 [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
6328 }
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
6329 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6330 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6331
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6332 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6333 * Removes all nodes from a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6334 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6335 * 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
6336 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6337 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
6338 {
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
6339 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
6340 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
6341 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
6342 [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
6343 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6344 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6345
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6346 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6347 * Expands a node on a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6348 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6349 * 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
6350 * 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
6351 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6352 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
6353 {
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
6354 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
6355 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
6356 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
6357 [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
6358 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6359 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6360
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6361 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6362 * Collapses a node on a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6363 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6364 * 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
6365 * 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
6366 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6367 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
6368 {
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
6369 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
6370 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
6371 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
6372 [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
6373 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6374 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6375
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6376 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6377 * Removes a node from a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6378 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6379 * 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
6380 * 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
6381 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6382 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
6383 {
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
6384 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
6385 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
6386 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
6387 [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
6388 [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
6389 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6390 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6391
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6392 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6393 * 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
6394 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6395 * 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
6396 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6397 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6398 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
6399 {
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
6400 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
6401 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
6402 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
6403 NSScrollView *scrollview = [cont scrollview];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
6404 [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
6405 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
6406 [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
6407 [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
6408 [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
6409 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
6410 return cont;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6411 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6412
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6413 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6414 * Sets up the container columns.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6415 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6416 * 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
6417 * 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
6418 * 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
6419 * 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
6420 * 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
6421 * (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
6422 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6423 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
6424 {
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
6425 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
6426 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6427 int z;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6428 DWContainer *cont = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6429
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6430 [cont setup];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6431
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6432 for(z=0;z<count;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6433 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6434 NSTableColumn *column = [[NSTableColumn alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6435 [[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
6436 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
6437 {
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
6438 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
6439 [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
6440 [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
6441 }
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
6442 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
6443 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6444 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
6445 [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
6446 [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
6447 }
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
6448 /* 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
6449 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
6450 {
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6451 [(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
6452 [(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
6453 }
0103a8751ab4 Removed an unnecessary method in the container (rowCount) and implemented container column alignment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 854
diff changeset
6454 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
6455 {
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6456 [(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
6457 [(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
6458 }
795
f23cad02cfb3 Make listbox, container and tree cells uneditable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 794
diff changeset
6459 [column setEditable:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6460 [cont addTableColumn:column];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6461 [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
6462 [column release];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6463 }
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
6464 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
6465 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6466 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6467
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6468 /*
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6469 * Configures the main filesystem columnn title for localization.
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6470 * Parameters:
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6471 * handle: Handle to the container to be configured.
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6472 * title: The title to be displayed in the main column.
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6473 */
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6474 void API dw_filesystem_set_column_title(HWND handle, char *title)
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6475 {
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6476 char *newtitle = strdup(title ? title : "");
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6477
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6478 dw_window_set_data(handle, "_dw_coltitle", newtitle);
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6479 }
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6480
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6481 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6482 * 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
6483 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6484 * 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
6485 * 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
6486 * 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
6487 * 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
6488 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6489 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
6490 {
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
6491 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
6492 unsigned long *newflags = malloc(sizeof(unsigned long) * (count + 1));
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6493 char *coltitle = (char *)dw_window_get_data(handle, "_dw_coltitle");
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
6494 DWContainer *cont = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6495
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6496 newtitles[0] = coltitle ? coltitle : "Filename";
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
6497
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
6498 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
6499
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
6500 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
6501 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
6502
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
6503 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
6504 [cont setFilesystem:YES];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6505
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6506 if(coltitle)
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6507 {
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6508 dw_window_set_data(handle, "_dw_coltitle", NULL);
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6509 free(coltitle);
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
6510 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6511 free(newtitles);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6512 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
6513 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6514 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6515
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6516 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6517 * 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
6518 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6519 * 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
6520 * 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
6521 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6522 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
6523 {
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
6524 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
6525 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6526 DWContainer *cont = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6527 [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
6528 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6529 return cont;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6530 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6531
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6532 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6533 * 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
6534 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6535 * 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
6536 * 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
6537 * 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
6538 * 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
6539 * 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
6540 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6541 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
6542 {
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
6543 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
6544 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6545 DWContainer *cont = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6546 id object = nil;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6547 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
6548 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
6549
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
6550 /* 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
6551 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
6552 {
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
6553 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
6554 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6555
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6556 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
6557 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6558 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
6559 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6560 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
6561 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6562 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
6563 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6564 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
6565 object = [ NSString stringWithUTF8String:str ];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6566 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6567 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6568 {
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6569 char textbuffer[101] = {0};
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6570
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6571 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
6572 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6573 ULONG tmp = *((ULONG *)data);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6574
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6575 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
6576 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6577 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
6578 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6579 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
6580 CDATE cdate = *((CDATE *)data);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6581
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6582 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
6583 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
6584 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
6585 curtm.tm_year = cdate.year - 1900;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6586
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6587 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
6588 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6589 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
6590 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6591 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
6592 CTIME ctime = *((CTIME *)data);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6593
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6594 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
6595 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
6596 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
6597 curtm.tm_sec = ctime.seconds;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6598
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6599 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
6600 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
6601 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
6602 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
6603 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6604 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6605
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6606 [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
6607 [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
6608 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6609 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6610
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6611 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6612 * 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
6613 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6614 * 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
6615 * 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
6616 * 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
6617 * 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
6618 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6619 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
6620 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6621 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
6622 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6623
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6624 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6625 * 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
6626 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6627 * 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
6628 * 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
6629 * 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
6630 * 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
6631 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6632 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
6633 {
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
6634 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
6635 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6636
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6637 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6638 * 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
6639 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6640 * 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
6641 * 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
6642 * 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
6643 * 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
6644 * 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
6645 */
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
6646 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
6647 {
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
6648 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
6649 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6650
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 * 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
6653 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6654 * 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
6655 * 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
6656 * 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
6657 * 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
6658 * 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
6659 */
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
6660 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
6661 {
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
6662 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
6663 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
6664 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
6665 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
6666 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
6667
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
6668 /* 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
6669 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
6670 {
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
6671 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
6672 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6673
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
6674 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
6675 [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
6676 [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
6677 [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
6678 [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
6679 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6680 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6681
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6682 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6683 * 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
6684 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6685 * 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
6686 * 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
6687 * 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
6688 * 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
6689 * 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
6690 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6691 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
6692 {
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
6693 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
6694 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6695
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6696 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6697 * 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
6698 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6699 * 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
6700 * column: Zero based column.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6701 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6702 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
6703 {
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
6704 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
6705 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
6706 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
6707 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
6708 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
6709 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
6710 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
6711 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
6712 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
6713 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
6714 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
6715 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
6716 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
6717 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
6718 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
6719 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
6720 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
6721 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
6722 return rc;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6723 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6724
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6725 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6726 * 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
6727 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6728 * 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
6729 * column: Zero based column.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6730 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6731 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
6732 {
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
6733 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
6734 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6735
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6736 /*
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6737 * 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
6738 * Parameters:
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6739 * 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
6740 * 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
6741 * 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
6742 * 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
6743 * 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
6744 */
1291
b99b0b2c2826 Renamed dw_container_set_row_bg() to dw_container_set_stripe().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1288
diff changeset
6745 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
6746 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6747 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
6748 DW_MUTEX_LOCK;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6749 DWContainer *cont = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6750 [cont setRowBgOdd:(oddcolor == DW_CLR_DEFAULT ? DW_RGB(230,230,230) : oddcolor)
1212
5271d5cb27ac Implemented dw_container_set_row_bg() on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1210
diff changeset
6751 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
6752 DW_MUTEX_UNLOCK;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6753 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6754
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
6755 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6756 * 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
6757 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6758 * 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
6759 * 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
6760 * width: Width of column in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6761 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6762 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
6763 {
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
6764 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
6765 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
6766 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
6767 if([cont filesystem])
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
6768 {
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
6769 column++;
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
6770 }
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
6771 NSTableColumn *col = [cont getColumn:column];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6772
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
6773 [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
6774 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6775 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6776
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6777 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6778 * 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
6779 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6780 * 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
6781 * 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
6782 * title: String title of the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6783 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6784 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
6785 {
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
6786 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
6787 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6788 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
6789 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
6790 [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
6791 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
6792 }
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
6793
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
6794
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
6795 /*
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
6796 * 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
6797 * 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
6798 * 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
6799 * 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
6800 * 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
6801 */
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
6802 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
6803 {
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
6804 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
6805 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
6806 DWContainer *cont = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6807 [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
6808 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6809 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6810
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6811 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6812 * 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
6813 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6814 * 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
6815 * 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
6816 * 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
6817 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6818 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
6819 {
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
6820 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
6821 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6822 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
6823 [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
6824 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6825 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6826
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6827 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6828 * Removes all rows from a container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6829 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6830 * 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
6831 * 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
6832 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6833 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
6834 {
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
6835 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
6836 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6837 DWContainer *cont = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6838 [cont clear];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6839 if(redraw)
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6840 {
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6841 [cont reloadData];
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
6842 }
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
6843 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6844 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6845
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6846 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6847 * 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
6848 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6849 * 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
6850 * 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
6851 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6852 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
6853 {
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
6854 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
6855 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
6856 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
6857 int x;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6858
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
6859 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
6860 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6861 [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
6862 }
1705
3fa0448d3a7e Fixed a bug in dw_container_delete_row() on Mac and potentially a similar bug in dw_container_delete().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1704
diff changeset
6863 [cont 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
6864 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6865 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6866
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6867 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6868 * Scrolls container up or down.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6869 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6870 * 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
6871 * 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
6872 * 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
6873 * 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
6874 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6875 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
6876 {
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
6877 DWContainer *cont = handle;
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
6878 NSScrollView *sv = [cont scrollview];
852
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6879 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
6880 int rowcount = (int)[cont numberOfRowsInTableView:cont];
852
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6881 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
6882 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
6883
853
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6884 /* Safety check */
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6885 if(rowcount < 1)
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6886 {
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6887 return;
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6888 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6889
853
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
6890 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
6891
852
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6892 switch(direction)
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6893 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6894 case DW_SCROLL_TOP:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6895 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6896 [scrollbar setFloatValue:0];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6897 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6898 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6899 case DW_SCROLL_BOTTOM:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6900 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6901 [scrollbar setFloatValue:1];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6902 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6903 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6904 case DW_SCROLL_UP:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6905 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6906 float newpos = currpos - change;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6907 if(newpos < 0)
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6908 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6909 newpos = 0;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6910 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6911 [scrollbar setFloatValue:newpos];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6912 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6913 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6914 case DW_SCROLL_DOWN:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6915 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6916 float newpos = currpos + change;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6917 if(newpos > 1)
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6918 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6919 newpos = 1;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6920 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6921 [scrollbar setFloatValue:newpos];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6922 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6923 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
6924 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6925 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6926
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6927 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6928 * 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
6929 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6930 * 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
6931 * 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
6932 * 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
6933 * 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
6934 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6935 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
6936 {
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
6937 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
6938 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
6939 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
6940 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
6941 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
6942 char *retval = NULL;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6943
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
6944 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
6945 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6946 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
6947 [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
6948 }
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
6949 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6950 return retval;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6951 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6952
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6953 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6954 * 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
6955 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6956 * 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
6957 * 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
6958 * 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
6959 * 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
6960 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6961 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
6962 {
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
6963 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
6964 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
6965 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
6966 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
6967 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
6968 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
6969 char *retval = NULL;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6970
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
6971 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
6972 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6973 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
6974 [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
6975 }
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
6976 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6977 return retval;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6978 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6979
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6980 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6981 * 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
6982 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6983 * 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
6984 * 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
6985 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6986 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
6987 {
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
6988 int _locked_by_me = FALSE;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
6989 DW_LOCAL_POOL_IN;
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
6990 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
6991 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
6992 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
6993 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
6994 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
6995
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
6996 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
6997 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6998 thistext = [cont getRowTitle:x];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6999
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
7000 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
7001 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7002 NSIndexSet *selected = [[NSIndexSet alloc] initWithIndex:(NSUInteger)x];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7003
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
7004 [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
7005 [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
7006 [cont scrollRowToVisible:x];
1335
44f8a846f3c1 A couple minor code cleanups on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1334
diff changeset
7007 DW_MUTEX_UNLOCK;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7008 DW_LOCAL_POOL_OUT;
1335
44f8a846f3c1 A couple minor code cleanups on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1334
diff changeset
7009 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
7010 }
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7011 }
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
7012 DW_MUTEX_UNLOCK;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7013 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7014 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7015
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7016 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7017 * 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
7018 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7019 * handle: Handle to the window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7020 * 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
7021 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7022 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
7023 {
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
7024 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
7025 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
7026 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
7027 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
7028 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
7029 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
7030
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
7031 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
7032 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7033 thistext = [cont getRowTitle:x];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7034
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
7035 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
7036 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7037 [cont removeRow:x];
1705
3fa0448d3a7e Fixed a bug in dw_container_delete_row() on Mac and potentially a similar bug in dw_container_delete().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1704
diff changeset
7038 [cont reloadData];
1335
44f8a846f3c1 A couple minor code cleanups on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1334
diff changeset
7039 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
7040 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
7041 }
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7042 }
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
7043 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7044 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7045
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7046 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7047 * 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
7048 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7049 * 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
7050 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7051 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
7052 {
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
7053 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
7054 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7055 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
7056 [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
7057 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7058 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7059
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7060 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7061 * Inserts an icon into the taskbar.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7062 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7063 * 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
7064 * 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
7065 * 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
7066 */
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
7067 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
7068 {
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
7069 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
7070 NSImage *image = icon;
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
7071 [item setImage:image];
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
7072 if(bubbletext)
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
7073 [item setToolTip:[NSString stringWithUTF8String:bubbletext]];
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
7074 [item setTarget:handle];
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
7075 [item setEnabled:YES];
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
7076 [item setHighlightMode:YES];
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
7077 [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
7078 [item setAction:@selector(mouseDown:)];
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
7079 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
7080 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7081
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7082 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7083 * Deletes an icon from the taskbar.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7084 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7085 * 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
7086 * 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
7087 */
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
7088 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
7089 {
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
7090 NSStatusItem *item = dw_window_get_data(handle, "_dw_taskbar");
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7091 DW_LOCAL_POOL_IN;
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
7092 [item release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7093 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7094 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7095
1708
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
7096 /* Internal function to keep HICNs from getting too big */
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
7097 void _icon_resize(NSImage *image)
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
7098 {
1709
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
7099 if(image)
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
7100 {
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
7101 NSSize size = [image size];
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
7102 if(size.width > 24 || size.height > 24)
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
7103 {
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
7104 if(size.width > 24)
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
7105 size.width = 24;
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
7106 if(size.height > 24)
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
7107 size.height = 24;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7108 [image setSize:size];
1709
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
7109 }
1708
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
7110 }
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
7111 }
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
7112
1713
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
7113 /* Internal version that does not resize the image */
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
7114 HICN _dw_icon_load(unsigned long resid)
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
7115 {
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
7116 NSBundle *bundle = [NSBundle mainBundle];
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
7117 NSString *respath = [bundle resourcePath];
1770
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
7118 NSString *filepath = [respath stringByAppendingFormat:@"/%lu.png", resid];
1713
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
7119 NSImage *image = [[NSImage alloc] initWithContentsOfFile:filepath];
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
7120 return image;
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
7121 }
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
7122
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7123 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7124 * 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
7125 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7126 * 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
7127 * 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
7128 * 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
7129 * to an embedded XPM.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7130 */
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
7131 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
7132 {
1713
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
7133 NSImage *image = _dw_icon_load(resid);
1708
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
7134 _icon_resize(image);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7135 return image;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7136 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7137
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 * Obtains an icon from a file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7140 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7141 * 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
7142 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7143 * (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
7144 */
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
7145 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
7146 {
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7147 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
7148
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
7149 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
7150 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
7151 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
7152 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7153 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
7154 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
7155 }
1708
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
7156 _icon_resize(image);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7157 return image;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7158 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7159
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7160 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7161 * Obtains an icon from data
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7162 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7163 * 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
7164 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7165 * (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
7166 */
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
7167 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
7168 {
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7169 NSData *thisdata = [NSData dataWithBytes:data length:len];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7170 NSImage *image = [[NSImage alloc] initWithData:thisdata];
1708
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
7171 _icon_resize(image);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7172 return image;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7173 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7174
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7175 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7176 * 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
7177 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7178 * 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
7179 */
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
7180 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
7181 {
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
7182 NSImage *image = handle;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7183 DW_LOCAL_POOL_IN;
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
7184 [image release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7185 DW_LOCAL_POOL_OUT;
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 * 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
7190 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7191 * 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
7192 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7193 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
7194 {
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
7195 /* 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
7196 * 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
7197 * when the application is deactivated to simulate
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7198 * 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
7199 */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
7200 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
7201 /* [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
7202 return mdi;
650
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7206 * 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
7207 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7208 * 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
7209 * 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
7210 * 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
7211 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7212 * 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
7213 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7214 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
7215 {
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
7216 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
7217 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
7218 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7219 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
7220 [split setDelegate:split];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
7221 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
7222 [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
7223 [tmpbox autorelease];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7224 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
7225 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
7226 [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
7227 [tmpbox autorelease];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7228 if(type == DW_VERT)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7229 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7230 [split setVertical:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7231 }
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
7232 else
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
7233 {
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
7234 [split setVertical:YES];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
7235 }
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
7236 /* 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
7237 [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
7238 /* [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
7239 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7240 return split;
650
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7243 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7244 * 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
7245 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7246 * 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
7247 * 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
7248 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7249 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
7250 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7251 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
7252 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
7253 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
7254 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
7255 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
7256 /* 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
7257 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
7258 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
7259 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
7260 }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
7261 else
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
7262 {
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
7263 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
7264 }
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
7265 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
7266 {
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
7267 [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
7268 }
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
7269 else
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
7270 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
7271 /* 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
7272 * 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
7273 * 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
7274 */
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
7275 [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
7276 }
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
7277 DW_MUTEX_UNLOCK;
650
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7281 * 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
7282 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7283 * 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
7284 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7285 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
7286 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7287 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
7288 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
7289 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
7290 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
7291 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
7292 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
7293 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
7294 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
7295 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
7296 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
7297 }
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
7298 else
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
7299 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
7300 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
7301 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
7302 }
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
7303 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
7304 {
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
7305 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
7306 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7307 return retval;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7308 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7309
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
7310 /* 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
7311 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
7312 {
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
7313 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
7314 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
7315 NSFont *font = nil;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7316
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
7317 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
7318 {
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
7319 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
7320 *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
7321 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
7322 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
7323 }
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
7324 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
7325 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
7326 }
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
7327
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7328 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7329 * 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
7330 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7331 * 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
7332 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7333 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
7334 {
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
7335 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
7336 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7337 NSImageView *bitmap = [[NSImageView alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7338 [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
7339 [bitmap setImageScaling:NSScaleNone];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7340 [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
7341 [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
7342 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7343 return bitmap;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7344 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7345
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7346 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7347 * Creates a pixmap with given parameters.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7348 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7349 * 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
7350 * 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
7351 * 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
7352 * depth: Color depth of the pixmap.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7353 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7354 * 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
7355 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7356 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
7357 {
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
7358 HPIXMAP pixmap;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7359
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
7360 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
7361 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
7362 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
7363 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
7364 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
7365 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
7366 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
7367 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
7368 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
7369 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
7370 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
7371 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
7372 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
7373 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
7374 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
7375 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
7376 return pixmap;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7377 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7378
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
7379 /* 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
7380 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
7381 {
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
7382 [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
7383 [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
7384 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
7385 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
7386 [[[NSDictionary alloc] initWithObjectsAndKeys:image, NSGraphicsContextDestinationAttributeName, nil] autorelease];
1590
9eef6f82ee50 Comment cleanup in the Mac source.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1586
diff changeset
7387 /* Make a new transform */
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
7388 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
7389
1590
9eef6f82ee50 Comment cleanup in the Mac source.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1586
diff changeset
7390 /* By scaling Y negatively, we effectively flip the image */
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
7391 [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
7392
1590
9eef6f82ee50 Comment cleanup in the Mac source.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1586
diff changeset
7393 /* But we also have to translate it back by its height */
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
7394 [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
7395
1590
9eef6f82ee50 Comment cleanup in the Mac source.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1586
diff changeset
7396 /* Apply the transform */
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
7397 [t concat];
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
7398 [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
7399 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
7400 [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
7401 }
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
7402
650
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 * Creates a pixmap from a file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7405 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7406 * 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
7407 * 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
7408 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7409 * (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
7410 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7411 * 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
7412 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7413 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
7414 {
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
7415 HPIXMAP pixmap;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7416 DW_LOCAL_POOL_IN;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7417 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
7418
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
7419 if(!(pixmap = calloc(1,sizeof(struct _hpixmap))))
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7420 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7421 DW_LOCAL_POOL_OUT;
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
7422 return NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7423 }
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
7424 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
7425 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
7426 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
7427 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7428 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
7429 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
7430 }
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
7431 if(!tmpimage)
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7432 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7433 DW_LOCAL_POOL_OUT;
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
7434 return NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7435 }
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
7436 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
7437 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
7438 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
7439 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
7440 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
7441 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
7442 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
7443 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
7444 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
7445 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
7446 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
7447 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
7448 _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
7449 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
7450 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
7451 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
7452 pixmap->handle = handle;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7453 DW_LOCAL_POOL_OUT;
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
7454 return pixmap;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7455 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7456
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7457 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7458 * Creates a pixmap from memory.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7459 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7460 * 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
7461 * data: Source of the image data
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7462 * (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
7463 * le: length of data
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7464 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7465 * 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
7466 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7467 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
7468 {
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
7469 HPIXMAP pixmap;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7470 DW_LOCAL_POOL_IN;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7471
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
7472 if(!(pixmap = calloc(1,sizeof(struct _hpixmap))))
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7473 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7474 DW_LOCAL_POOL_OUT;
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
7475 return NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7476 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7477 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
7478 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
7479 if(!tmpimage)
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7480 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7481 DW_LOCAL_POOL_OUT;
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
7482 return NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7483 }
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
7484 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
7485 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
7486 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
7487 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
7488 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
7489 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
7490 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
7491 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
7492 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
7493 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
7494 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
7495 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
7496 _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
7497 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
7498 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
7499 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
7500 pixmap->handle = handle;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7501 DW_LOCAL_POOL_OUT;
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
7502 return pixmap;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7503 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7504
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7505 /*
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
7506 * 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
7507 * 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
7508 * 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
7509 * 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
7510 * 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
7511 * 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
7512 * is handled automatically
650
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 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
7515 {
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
7516 /* Don't do anything */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7517 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7518
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 * 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
7521 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7522 * 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
7523 * 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
7524 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7525 * 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
7526 */
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
7527 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
7528 {
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
7529 HPIXMAP pixmap;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7530 DW_LOCAL_POOL_IN;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7531
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
7532 if(!(pixmap = calloc(1,sizeof(struct _hpixmap))))
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7533 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7534 DW_LOCAL_POOL_OUT;
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
7535 return NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7536 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7537
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
7538 NSBundle *bundle = [NSBundle mainBundle];
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
7539 NSString *respath = [bundle resourcePath];
1770
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
7540 NSString *filepath = [respath stringByAppendingFormat:@"/%lu.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
7541 NSImage *temp = [[NSImage alloc] initWithContentsOfFile:filepath];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7542
1318
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
7543 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
7544 {
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
7545 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
7546 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
7547 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
7548 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
7549 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
7550 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
7551 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
7552 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
7553 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
7554 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
7555 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
7556 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
7557 _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
7558 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
7559 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
7560 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
7561 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
7562 [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
7563 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
7564 }
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
7565 free(pixmap);
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7566 DW_LOCAL_POOL_OUT;
1318
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
7567 return NULL;
650
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
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
7570 /*
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
7571 * 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
7572 * 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
7573 * 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
7574 * 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
7575 * 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
7576 * 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
7577 * 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
7578 * 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
7579 * 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
7580 */
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
7581 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
7582 {
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
7583 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
7584 {
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
7585 NSFont *font = _dw_font_by_name(fontname);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7586
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
7587 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
7588 {
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7589 DW_LOCAL_POOL_IN;
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
7590 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
7591 [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
7592 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
7593 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
7594 [oldfont release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7595 DW_LOCAL_POOL_OUT;
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
7596 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
7597 }
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
7598 }
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
7599 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
7600 }
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
7601
650
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 * Destroys an allocated pixmap.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7604 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7605 * 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
7606 * dw_pixmap_new..
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7607 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7608 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
7609 {
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
7610 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
7611 {
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
7612 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
7613 NSFont *font = pixmap->font;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7614 DW_LOCAL_POOL_IN;
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
7615 [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
7616 [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
7617 free(pixmap);
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7618 DW_LOCAL_POOL_OUT;
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
7619 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7620 }
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7623 * Copies from one item to another.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7624 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7625 * dest: Destination window handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7626 * destp: Destination pixmap. (choose only one).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7627 * xdest: X coordinate of destination.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7628 * ydest: Y coordinate of destination.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7629 * width: Width of area to copy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7630 * height: Height of area to copy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7631 * src: Source window handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7632 * srcp: Source pixmap. (choose only one).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7633 * xsrc: X coordinate of source.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7634 * ysrc: Y coordinate of source.
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 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
7637 {
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7638 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
7639 }
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7640
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7641 /*
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7642 * 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
7643 * Parameters:
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7644 * dest: Destination window handle.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7645 * destp: Destination pixmap. (choose only one).
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7646 * xdest: X coordinate of destination.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7647 * ydest: Y coordinate of destination.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7648 * width: Width of the target area.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7649 * height: Height of the target area.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7650 * src: Source window handle.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7651 * srcp: Source pixmap. (choose only one).
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7652 * xsrc: X coordinate of source.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7653 * ysrc: Y coordinate of source.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7654 * srcwidth: Width of area to copy.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7655 * srcheight: Height of area to copy.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7656 * Returns:
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7657 * 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
7658 */
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7659 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
7660 {
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7661 DWBitBlt *bltinfo = calloc(1, sizeof(DWBitBlt));
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7662 NSValue* bi;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7663 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7664
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7665 bi = [NSValue valueWithPointer:bltinfo];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7666
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7667 /* Sanity checks */
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7668 if((!dest && !destp) || (!src && !srcp) ||
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7669 ((srcwidth == -1 || srcheight == -1) && srcwidth != srcheight))
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7670 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7671 DW_LOCAL_POOL_OUT;
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7672 return DW_ERROR_GENERAL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7673 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7674
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7675 /* 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
7676 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
7677 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
7678 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
7679 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
7680 bltinfo->width = width;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7681 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
7682 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
7683 bltinfo->ysrc = ysrc;
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7684 bltinfo->srcwidth = srcwidth;
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7685 bltinfo->srcheight = srcheight;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7686
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7687 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
7688 {
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
7689 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
7690 }
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
7691 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
7692 {
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
7693 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
7694 [object retain];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7695 }
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7696 if(DWThread == (DWTID)-1)
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7697 [DWObj doBitBlt:bi];
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7698 else
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7699 [DWObj performSelectorOnMainThread:@selector(doBitBlt:) withObject:bi waitUntilDone:YES];
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
7700 DW_LOCAL_POOL_OUT;
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
7701 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7702 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7703
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7704 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7705 * 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
7706 * Not available under OS/2, eCS
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7707 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7708 * 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
7709 * 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
7710 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7711 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
7712 {
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7713 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
7714 [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
7715 [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
7716 [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
7717 [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
7718 [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
7719 return calendar;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7720 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7721
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7722 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7723 * 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
7724 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7725 * 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
7726 * year...
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 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
7729 {
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7730 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
7731 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
7732 char buffer[101];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7733 DW_LOCAL_POOL_IN;
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
7734
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
7735 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
7736
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7737 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
7738 [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
7739 [date release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7740 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7741 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7742
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7743 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7744 * 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
7745 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7746 * 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
7747 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7748 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
7749 {
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7750 DWCalendar *calendar = handle;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7751 DW_LOCAL_POOL_IN;
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
7752 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
7753 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
7754 [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
7755 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
7756 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
7757 if(*year < 70)
d3fb3613726a Calendar control should return years with 4 digits not 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 729
diff changeset
7758 {
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7759 *year += 2000;
730
d3fb3613726a Calendar control should return years with 4 digits not 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 729
diff changeset
7760 }
d3fb3613726a Calendar control should return years with 4 digits not 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 729
diff changeset
7761 else if(*year < 100)
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7762 {
730
d3fb3613726a Calendar control should return years with 4 digits not 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 729
diff changeset
7763 *year += 1900;
d3fb3613726a Calendar control should return years with 4 digits not 2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 729
diff changeset
7764 }
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
7765 [df release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7766 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7767 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7768
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7769 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7770 * 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
7771 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7772 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7773 * 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
7774 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7775 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
7776 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7777 WebView *html = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7778 switch(action)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7779 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7780 case DW_HTML_GOBACK:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7781 [html goBack];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7782 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7783 case DW_HTML_GOFORWARD:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7784 [html goForward];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7785 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7786 case DW_HTML_GOHOME:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7787 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7788 case DW_HTML_SEARCH:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7789 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7790 case DW_HTML_RELOAD:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7791 [html reload:html];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7792 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7793 case DW_HTML_STOP:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7794 [html stopLoading:html];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7795 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7796 case DW_HTML_PRINT:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7797 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7798 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7799 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7800
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 * 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
7803 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7804 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7805 * 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
7806 * be rendered.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7807 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7808 * 0 on success.
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_html_raw(HWND handle, char *string)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7811 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7812 WebView *html = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7813 [[html mainFrame] loadHTMLString:[ NSString stringWithUTF8String:string ] baseURL:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7814 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7815 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7816
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7817 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7818 * 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
7819 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7820 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7821 * 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
7822 * file object to be rendered.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7823 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7824 * 0 on success.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7825 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7826 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
7827 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7828 WebView *html = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7829 [[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
7830 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7831 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7832
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7833 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7834 * 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
7835 * Not available under OS/2, eCS
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7836 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7837 * 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
7838 * 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
7839 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7840 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
7841 {
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
7842 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
7843 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7844 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
7845 /* [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
7846 DW_MUTEX_UNLOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7847 return web;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7848 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7849
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7850 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7851 * 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
7852 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7853 * 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
7854 * 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
7855 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7856 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
7857 {
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7858 NSPoint mouseLoc;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7859 mouseLoc = [NSEvent mouseLocation];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7860 if(x)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7861 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7862 *x = mouseLoc.x;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7863 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7864 if(y)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7865 {
946
c64d3ca566f9 Attempt at inverting the window position and mouse pointer coordinates on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 945
diff changeset
7866 *y = [[NSScreen mainScreen] frame].size.height - mouseLoc.y;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7867 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7868 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7869
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7870 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7871 * 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
7872 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7873 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7874 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7875 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7876 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
7877 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7878 /* 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
7879 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7880
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7881 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7882 * 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
7883 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7884 * 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
7885 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7886 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
7887 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
7888 {
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
7889 NSMenu *menu = [[NSMenu alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7890 [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
7891 /* [menu setTag:cid]; Why doesn't this work? */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7892 return menu;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7893 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7894
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 * Create a menubar on a window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7897 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7898 * 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
7899 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7900 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
7901 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7902 NSWindow *window = location;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7903 NSMenu *windowmenu = _generate_main_menu();
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7904 [[window contentView] setMenu:windowmenu];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7905 return (HMENUI)windowmenu;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7906 }
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7909 * 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
7910 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7911 * menu: Handle of a menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7912 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7913 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
7914 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7915 NSMenu *thismenu = *menu;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7916 DW_LOCAL_POOL_IN;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7917 [thismenu release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7918 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7919 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7920
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7921 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7922 * 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
7923 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7924 * 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
7925 * 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
7926 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7927 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7928 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7929 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
7930 {
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
7931 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
7932 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
7933 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
7934 NSWindow *window = [view window];
701
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
7935 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
7936 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
7937 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
7938 [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
7939 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
7940 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
7941 location:[window convertScreenToBase:p]
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7942 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
7943 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
7944 windowNumber:[window windowNumber]
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7945 context:[NSGraphicsContext currentContext]
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7946 eventNumber:1
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7947 clickCount:1
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7948 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
7949 [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
7950 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7951
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7952 char _removetilde(char *dest, char *src)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7953 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7954 int z, cur=0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7955 char accel = '\0';
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7956
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7957 for(z=0;z<strlen(src);z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7958 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7959 if(src[z] != '~')
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7960 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7961 dest[cur] = src[z];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7962 cur++;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7963 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7964 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7965 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7966 accel = src[z+1];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7967 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7968 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7969 dest[cur] = 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7970 return accel;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7971 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7972
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7973 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7974 * 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
7975 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7976 * 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
7977 * 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
7978 * 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
7979 * 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
7980 * 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
7981 * 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
7982 * 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
7983 * 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
7984 */
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
7985 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
7986 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7987 NSMenu *menu = menux;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7988 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
7989 DWMenuItem *item = NULL;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7990 if(strlen(title) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7991 {
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
7992 [menu addItem:[DWMenuItem separatorItem]];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7993 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7994 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7995 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7996 char accel[2];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7997 char *newtitle = malloc(strlen(title)+1);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7998 NSString *nstr;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7999
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8000 accel[0] = _removetilde(newtitle, title);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8001 accel[1] = 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8002
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8003 nstr = [ NSString stringWithUTF8String:newtitle ];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8004 free(newtitle);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8005
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
8006 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
8007 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
8008 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
8009 [menu addItem:item];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8010
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8011 [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
8012 if(check)
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
8013 {
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
8014 [item setCheck:YES];
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
8015 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
8016 {
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
8017 [item setState:NSOnState];
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
8018 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8019 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8020 if(flags & DW_MIS_DISABLED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8021 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8022 [item setEnabled:NO];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8023 }
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8024
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8025 if(submenux)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8026 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8027 [submenu setTitle:nstr];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8028 [menu setSubmenu:submenu forItem:item];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8029 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8030 return item;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8031 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8032 return item;
650
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8036 * 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
8037 * 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
8038 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8039 * 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
8040 * id: Menuitem id.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8041 * 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
8042 */
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
8043 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
8044 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8045 id menu = menux;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8046 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
8047
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8048 if(menuitem != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8049 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8050 if(check)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8051 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8052 [menuitem setState:NSOnState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8053 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8054 else
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8055 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8056 [menuitem setState:NSOffState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8057 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8058 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8059 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8060
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8061 /*
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8062 * Deletes the menu item specified.
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8063 * Parameters:
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8064 * 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
8065 * id: Menuitem id.
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8066 * Returns:
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8067 * 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
8068 */
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8069 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
8070 {
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8071 id menu = menux;
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8072 NSMenuItem *menuitem = (NSMenuItem *)[menu itemWithTag:itemid];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8073
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8074 if(menuitem != nil)
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8075 {
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8076 [menu removeItem:menuitem];
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8077 return DW_ERROR_NONE;
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8078 }
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8079 return DW_ERROR_UNKNOWN;
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8080 }
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8081
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8082 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8083 * 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
8084 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8085 * 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
8086 * id: Menuitem id.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8087 * 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
8088 * DW_MIS_CHECKED/DW_MIS_UNCHECKED
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8089 */
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
8090 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
8091 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8092 id menu = menux;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8093 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
8094
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8095 if(menuitem != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8096 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8097 if(state & DW_MIS_CHECKED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8098 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8099 [menuitem setState:NSOnState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8100 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8101 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
8102 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8103 [menuitem setState:NSOffState];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8104 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8105 if(state & DW_MIS_ENABLED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8106 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8107 [menuitem setEnabled:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8108 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8109 else if(state & DW_MIS_DISABLED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8110 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8111 [menuitem setEnabled:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8112 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8113 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8114 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8115
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
8116 /* 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
8117 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
8118 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8119 NSArray *pages = [notebook tabViewItems];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8120 for(DWNotebookPage *notepage in pages)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8121 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8122 if([notepage pageid] == pageid)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8123 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8124 return notepage;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8125 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8126 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8127 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
8128 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
8129
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8130 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8131 * 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
8132 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8133 * 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
8134 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8135 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
8136 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
8137 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8138 DWNotebook *notebook = [[DWNotebook alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8139 [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
8140 /* [notebook setTag:cid]; Why doesn't this work? */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8141 return notebook;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8142 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8143
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8144 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8145 * 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
8146 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8147 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8148 * flags: Any additional page creation flags.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8149 * 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
8150 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8151 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
8152 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8153 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8154 NSInteger page = [notebook pageid];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8155 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
8156 [notepage setPageid:(int)page];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8157 if(front)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8158 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8159 [notebook insertTabViewItem:notepage atIndex:(NSInteger)0];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8160 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8161 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8162 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8163 [notebook addTabViewItem:notepage];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8164 }
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
8165 [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
8166 [notebook setPageid:(int)(page+1)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8167 return (unsigned long)page;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8168 }
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8171 * Remove a page from a notebook.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8172 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8173 * handle: Handle to the notebook widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8174 * 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
8175 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8176 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
8177 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8178 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8179 DWNotebookPage *notepage = _notepage_from_id(notebook, pageid);
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8180 DW_LOCAL_POOL_IN;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8181
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8182 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8183 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8184 [notebook removeTabViewItem:notepage];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8185 }
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8186 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8187 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8188
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8189 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8190 * Queries the currently visible page ID.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8191 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8192 * handle: Handle to the notebook widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8193 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8194 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
8195 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8196 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8197 DWNotebookPage *notepage = (DWNotebookPage *)[notebook selectedTabViewItem];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8198 return [notepage pageid];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8199 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8200
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8201 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8202 * Sets the currently visibale page ID.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8203 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8204 * handle: Handle to the notebook widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8205 * 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
8206 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8207 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
8208 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8209 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8210 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
8211
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8212 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8213 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8214 [notebook selectTabViewItem:notepage];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8215 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8216 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8217
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 * 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
8220 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8221 * handle: Notebook handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8222 * 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
8223 * 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
8224 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8225 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
8226 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8227 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8228 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
8229
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8230 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8231 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8232 [notepage setLabel:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8233 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8234 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8235
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8236 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8237 * 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
8238 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8239 * handle: Notebook handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8240 * 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
8241 * 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
8242 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8243 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
8244 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8245 /* Note supported here... do nothing */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8246 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8247
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8248 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8249 * 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
8250 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8251 * 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
8252 * 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
8253 * page: Box handle to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8254 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8255 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
8256 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8257 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8258 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
8259
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8260 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8261 {
667
28727d9a835c Fix for a rather serious notebook layout bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 666
diff changeset
8262 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
8263 DWBox *box = tmpbox;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8264
667
28727d9a835c Fix for a rather serious notebook layout bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 666
diff changeset
8265 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
8266 [notepage setView:box];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8267 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8268 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8269
1610
48a61abcd5bb Make sure source will build with Mac frameworks older than 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1607
diff changeset
8270 #ifndef NSWindowCollectionBehaviorFullScreenPrimary
48a61abcd5bb Make sure source will build with Mac frameworks older than 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1607
diff changeset
8271 #define NSWindowCollectionBehaviorFullScreenPrimary (1 << 7)
48a61abcd5bb Make sure source will build with Mac frameworks older than 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1607
diff changeset
8272 #endif
48a61abcd5bb Make sure source will build with Mac frameworks older than 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1607
diff changeset
8273
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8274 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8275 * Create a new Window Frame.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8276 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8277 * 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
8278 * title: The Window title.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8279 * 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
8280 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8281 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
8282 {
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
8283 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
8284 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
8285 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
8286 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
8287 initWithContentRect:frame
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8288 styleMask:(flStyle)
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
8289 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
8290 defer:false];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8291
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8292 [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
8293
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8294 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
8295
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8296 [window setContentView:view];
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8297 [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
8298 [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
8299 [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
8300 [view release];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8301
1607
d7fcea7bfcf9 Add full screen support for resizable windows on Mac 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1593
diff changeset
8302 /* Enable full screen mode on resizeable windows */
d7fcea7bfcf9 Add full screen support for resizable windows on Mac 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1593
diff changeset
8303 if(flStyle & DW_FCF_SIZEBORDER)
d7fcea7bfcf9 Add full screen support for resizable windows on Mac 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1593
diff changeset
8304 {
d7fcea7bfcf9 Add full screen support for resizable windows on Mac 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1593
diff changeset
8305 [window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
d7fcea7bfcf9 Add full screen support for resizable windows on Mac 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1593
diff changeset
8306 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8307
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
8308 /* 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
8309 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
8310 {
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
8311 id object = hwndOwner;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8312
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
8313 /* 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
8314 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
8315 {
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
8316 /* 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
8317 [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
8318 [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
8319 }
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
8320 }
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
8321 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
8322 return (HWND)window;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8323 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8324
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8325 /*
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8326 * 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
8327 * Parameters:
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8328 * handle: Window handle of the widget.
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8329 * function: Function pointer to be called.
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8330 * 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
8331 */
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8332 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
8333 {
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
8334 void **params = calloc(2, sizeof(void *));
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8335 NSValue *v;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8336 DW_LOCAL_POOL_IN;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8337 v = [NSValue valueWithPointer:params];
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
8338 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
8339 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
8340 [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
8341 free(params);
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8342 DW_LOCAL_POOL_OUT;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8343 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8344
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8345
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
8346 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8347 * 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
8348 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8349 * 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
8350 * 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
8351 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8352 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
8353 {
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
8354 id object = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8355
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8356 if([ object isKindOfClass:[ NSView class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8357 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8358 NSView *view = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8359
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
8360 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
8361 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
8362 [view discardCursorRects];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
8363 }
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
8364 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
8365 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
8366 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
8367 NSCursor *cursor = [NSCursor arrowCursor];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8368
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
8369 [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
8370 }
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
8371 /* 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
8372 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8373 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8374
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8375 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8376 * Makes the window visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8377 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8378 * 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
8379 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8380 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
8381 {
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
8382 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8383
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
8384 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
8385 {
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
8386 DWWindow *window = handle;
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
8387 NSRect rect = [[window contentView] frame];
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8388 id defaultitem = [window initialFirstResponder];
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
8389
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
8390 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
8391 {
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
8392 [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
8393 }
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
8394 /* 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
8395 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
8396 {
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
8397 /* Determine the contents size */
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
8398 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
8399 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8400 /* If the position was not set... generate a default
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8401 * default one in a similar pattern to SHELLPOSITION.
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8402 */
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
8403 if(![window shown])
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
8404 {
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8405 static int defaultx = 0, defaulty = 0;
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
8406 int cx = dw_screen_width(), cy = dw_screen_height();
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8407 int maxx = cx / 4, maxy = cy / 4;
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
8408 NSPoint point;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8409
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
8410 rect = [window frame];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8411
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8412 defaultx += 20;
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8413 defaulty += 20;
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8414 if(defaultx > maxx)
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8415 defaultx = 20;
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8416 if(defaulty > maxy)
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8417 defaulty = 20;
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8418
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
8419 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
8420 /* 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
8421 point.y = cy - defaulty - (int)rect.size.height - 22;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8422
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
8423 [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
8424 [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
8425 }
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
8426 [[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
8427 [window makeKeyAndOrderFront:nil];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8428
1782
d056a50196a9 Attempted fix at Mac textured background repeat problems. Thanks to Christoph Sinai
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1779
diff changeset
8429 if(!([window styleMask] & NSResizableWindowMask))
d056a50196a9 Attempted fix at Mac textured background repeat problems. Thanks to Christoph Sinai
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1779
diff changeset
8430 {
d056a50196a9 Attempted fix at Mac textured background repeat problems. Thanks to Christoph Sinai
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1779
diff changeset
8431 /* Fix incorrect repeat in displaying textured windows */
d056a50196a9 Attempted fix at Mac textured background repeat problems. Thanks to Christoph Sinai
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1779
diff changeset
8432 [window setAutorecalculatesContentBorderThickness:NO forEdge:NSMinYEdge];
d056a50196a9 Attempted fix at Mac textured background repeat problems. Thanks to Christoph Sinai
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1779
diff changeset
8433 [window setContentBorderThickness:0.0 forEdge:NSMinYEdge];
d056a50196a9 Attempted fix at Mac textured background repeat problems. Thanks to Christoph Sinai
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1779
diff changeset
8434 }
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8435 if(defaultitem)
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8436 {
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8437 /* If there is a default item set, make it first responder */
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8438 [window makeFirstResponder:defaultitem];
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8439 }
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
8440 }
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
8441 return 0;
650
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8444 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8445 * Makes the window invisible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8446 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8447 * 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
8448 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8449 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
8450 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8451 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8452
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8453 if([ object isKindOfClass:[ NSWindow class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8454 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8455 NSWindow *window = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8456
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
8457 [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
8458 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8459 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8460 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8461
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8462 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8463 * 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
8464 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8465 * handle: The window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8466 * 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
8467 * 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
8468 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8469 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
8470 {
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8471 id object = handle;
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8472 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
8473 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
8474 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
8475 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
8476
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
8477 /* 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
8478 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
8479 {
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
8480 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
8481 }
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
8482 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
8483 {
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
8484 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
8485 }
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
8486
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
8487 /* 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
8488 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
8489 {
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
8490 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
8491 }
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
8492 /* 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
8493 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
8494 {
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
8495 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
8496
1849
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
8497 [object setTextColor:(fg ? fg : [NSColor controlTextColor])];
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
8498 [cell setTextColor:(fg ? fg : [NSColor controlTextColor])];
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
8499 }
1849
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
8500 if([object isMemberOfClass:[DWButton class]])
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
8501 {
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
8502 [object setTextColor:(fg ? fg : [NSColor controlTextColor])];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
8503 }
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
8504 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
8505 {
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
8506 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
8507
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
8508 [cell setBackgroundColor:(bg ? bg : [NSColor controlColor])];
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8509 }
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8510 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
8511 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8512 DWBox *box = object;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8513
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
8514 [box setColor:_back];
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8515 }
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
8516 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
8517 {
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
8518 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
8519
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
8520 [cont setBackgroundColor:(bg ? bg : [NSColor controlBackgroundColor])];
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
8521 [cont setForegroundColor:(fg ? fg : [NSColor controlTextColor])];
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
8522 }
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
8523 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
8524 {
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
8525 DWMLE *mle = handle;
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
8526 [mle setBackgroundColor:(bg ? bg : [NSColor controlBackgroundColor])];
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
8527 NSTextStorage *ts = [mle textStorage];
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
8528 [ts setForegroundColor:(fg ? fg : [NSColor controlTextColor])];
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
8529 }
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8530 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8531 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8532
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8533 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8534 * 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
8535 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8536 * handle: The window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8537 * 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
8538 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8539 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
8540 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8541 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8542 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8543
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8544 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8545 * 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
8546 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8547 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8548 * width: New width in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8549 * height: New height in pixels.
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 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
8552 {
1778
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
8553 id object = _text_handle(handle);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8554
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8555 if([object isMemberOfClass:[DWWindow class]])
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
8556 {
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
8557 DWWindow *window = object;
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8558 SEL sssm = NSSelectorFromString(@"setStyleMask");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8559
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8560 if([window respondsToSelector:sssm])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8561 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8562 IMP issm = [window methodForSelector:sssm];
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8563 int currentstyle = (int)[window styleMask];
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8564 int tmp;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8565
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8566 tmp = currentstyle | (int)mask;
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8567 tmp ^= mask;
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8568 tmp |= style;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8569
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8570 issm(window, sssm, tmp);
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
8571 }
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
8572 }
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
8573 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
8574 {
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
8575 NSTextField *tf = object;
1778
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
8576 DWTextFieldCell *cell = [tf cell];
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
8577
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
8578 [cell setAlignment:(style & 0xF)];
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
8579 if(mask & DW_DT_VCENTER && [cell isMemberOfClass:[DWTextFieldCell class]])
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
8580 {
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
8581 [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
8582 }
1788
9d499b162fe1 Discovered a breakage in OS/2 functionality when building
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1786
diff changeset
8583 if(mask & DW_DT_WORDBREAK && [cell isMemberOfClass:[DWTextFieldCell class]])
9d499b162fe1 Discovered a breakage in OS/2 functionality when building
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1786
diff changeset
8584 {
9d499b162fe1 Discovered a breakage in OS/2 functionality when building
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1786
diff changeset
8585 [cell setWraps:(style & DW_DT_WORDBREAK ? YES : NO)];
9d499b162fe1 Discovered a breakage in OS/2 functionality when building
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1786
diff changeset
8586 }
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
8587 }
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
8588 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
8589 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8590 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
8591 [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
8592 }
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
8593 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
8594 {
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
8595 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
8596
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
8597 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
8598 {
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
8599 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
8600 [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
8601 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
8602 [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
8603 }
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
8604 }
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
8605 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
8606 {
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
8607 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
8608 {
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
8609 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
8610 [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
8611 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
8612 [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
8613 }
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
8614 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
8615 {
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
8616 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
8617 [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
8618 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
8619 [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
8620 }
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
8621 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8622 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8623
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8624 /*
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8625 * Sets the current focus item for a window/dialog.
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8626 * Parameters:
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8627 * handle: Handle to the dialog item to be focused.
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8628 * Remarks:
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8629 * This is for use after showing the window/dialog.
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8630 */
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8631 void API dw_window_set_focus(HWND handle)
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8632 {
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8633 id object = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8634
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8635 [[object window] makeFirstResponder:object];
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8636 }
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8637
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8638 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8639 * 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
8640 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8641 * window: Toplevel window or dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8642 * defaultitem: Handle to the dialog item to be default.
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8643 * Remarks:
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
8644 * This is for use before showing the window/dialog.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8645 */
766
82cde14ec084 Enable recalculating the key view loop (keyboard focus list) automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 763
diff changeset
8646 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
8647 {
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
8648 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
8649 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
8650
872
13debcad9757 Another test fix at reported crash in dw_window_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 867
diff changeset
8651 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
8652 {
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
8653 [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
8654 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8655 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8656
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8657 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8658 * 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
8659 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8660 * 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
8661 * 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
8662 */
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
8663 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
8664 {
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
8665 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
8666 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
8667
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
8668 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
8669 {
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
8670 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
8671 {
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
8672 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
8673
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
8674 [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
8675 }
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
8676 }
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
8677 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
8678 {
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
8679 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
8680 {
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
8681 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
8682 }
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
8683 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
8684 {
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
8685 /* 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
8686 * 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
8687 */
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
8688 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
8689 }
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
8690 [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
8691 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8692 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8693
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8694 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8695 * 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
8696 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8697 * handle: Handle to receive mouse input.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8698 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8699 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
8700 {
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
8701 /* 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
8702 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8703
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8704 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8705 * Releases previous mouse capture.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8706 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8707 void API dw_window_release(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8708 {
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
8709 /* 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
8710 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8711
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8712 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8713 * 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
8714 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8715 * handle: The window handle to destroy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8716 * 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
8717 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8718 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
8719 {
686
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8720 id object = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8721
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
8722 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
8723 {
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8724 /* 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
8725 * 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
8726 * 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
8727 */
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8728 NSWindow *window = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8729
686
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8730 /* 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
8731 if(newparent)
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8732 {
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8733 object = newparent;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8734
686
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8735 /* 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
8736 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
8737 {
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8738 /* 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
8739 [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
8740 [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
8741 return;
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8742 }
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8743 }
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
8744 /* 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
8745 [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
8746 [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
8747 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8748 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8749
1051
6919854298fd Added dw_font_choose() on Windows for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1050
diff changeset
8750 /* 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
8751 * Parameters:
6919854298fd Added dw_font_choose() on Windows for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1050
diff changeset
8752 * 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
8753 * Returns:
1051
6919854298fd Added dw_font_choose() on Windows for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1050
diff changeset
8754 * 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
8755 */
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8756 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
8757 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8758 /* 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
8759 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
8760 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
8761 DWDialog *dialog;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8762 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
8763
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8764 if(currfont)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8765 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
8766
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8767 if(fontDlg)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8768 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8769 dialog = [fontDlg dialog];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8770 /* 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
8771 if(dialog)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8772 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8773 return NULL;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8774 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8775 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8776 else
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8777 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8778 [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
8779 fontManager = [NSFontManager sharedFontManager];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8780 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
8781 }
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
8782
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8783 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
8784 if(font)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8785 [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
8786 else
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8787 [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
8788 [fontDlg setDialog:dialog];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8789 [fontDlg setFontManager:fontManager];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8790 [fontManager orderFrontFontPanel:fontManager];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8791
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
8792
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8793 /* 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
8794 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
8795 if(font)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8796 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8797 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
8798 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
8799 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
8800 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8801 return NULL;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8802 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
8803
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8804 /* 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
8805 * 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
8806 */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8807 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
8808 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8809 /* 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
8810 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
8811 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8812 DWBox *parent = (DWBox *)[object superview];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8813
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8814 /* 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
8815 * 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
8816 */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8817 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
8818 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8819 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
8820 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
8821 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8822
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8823 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
8824 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8825 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
8826 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
8827 int z;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8828
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8829 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
8830 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8831 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
8832 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
8833 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8834 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8835 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8836 return NULL;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8837 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8838
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8839 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8840 * 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
8841 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8842 * handle: The window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8843 * 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
8844 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8845 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
8846 {
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8847 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
8848
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8849 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
8850 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
8851 id object = _text_handle(handle);
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8852 if([object window])
673
6d0f0dc7ff7c Some minor font fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 672
diff changeset
8853 {
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8854 [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
8855 [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
8856 [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
8857 }
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
8858 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
8859 {
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
8860 [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
8861 }
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
8862 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
8863 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
8864 [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
8865 [[object cell] setFont:font];
673
6d0f0dc7ff7c Some minor font fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 672
diff changeset
8866 }
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
8867 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
8868 {
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
8869 DWRender *render = object;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8870
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
8871 [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
8872 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8873 else
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8874 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
8875 /* 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
8876 Item *item = _box_item(handle);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8877
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8878 /* 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
8879 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
8880 {
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8881 _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
8882 /* 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
8883 _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
8884 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8885 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
8886 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
8887 return DW_ERROR_UNKNOWN;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8888 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8889
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8890 /*
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8891 * Returns the current font for the specified window
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8892 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8893 * 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
8894 */
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8895 char * API dw_window_get_font(HWND handle)
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8896 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
8897 id object = _text_handle(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
8898 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
8899
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
8900 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
8901 {
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
8902 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
8903 }
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
8904 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
8905 {
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
8906 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
8907 }
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
8908 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
8909 {
1041
6a57bf20d8f9 Return displayName property instead of fontName property in dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1040
diff changeset
8910 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
8911 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
8912 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
8913 }
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
8914 return NULL;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8915 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8916
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8917 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8918 * 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
8919 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8920 * handle: The window handle to destroy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8921 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8922 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
8923 {
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
8924 int _locked_by_me = FALSE;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8925 DW_LOCAL_POOL_IN;
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
8926 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
8927 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
8928
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8929 /* Handle destroying a top-level window */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8930 if([ object isKindOfClass:[ NSWindow class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8931 {
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
8932 DWWindow *window = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8933 [window close];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8934 }
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8935 /* 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
8936 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
8937 {
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8938 NSMenu *menu = [object menu];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8939
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
8940 [menu removeItem:object];
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
8941 }
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
8942 /* Handle destroying a control or box */
1664
4ec0bce77f70 Fix dw_window_destroy() failing on splitbars and possibly other widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1654
diff changeset
8943 else if([object isKindOfClass:[NSView 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
8944 {
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
8945 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
8946
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
8947 /* 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
8948 * 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
8949 */
1549
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
8950 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
8951 && [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
8952 {
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
8953 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
8954 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
8955 }
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
8956
1099
d1cea9be1436 Fixed dw_window_destroy() with groupboxes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1098
diff changeset
8957 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
8958 {
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
8959 id window = [object window];
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
8960 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
8961 int z, index = -1;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8962 Item *tmpitem = NULL, *thisitem = thisbox->items;
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8963
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8964 if(!thisitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8965 thisbox->count = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8966
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
8967 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
8968 {
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
8969 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
8970 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
8971 }
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
8972
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
8973 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
8974 {
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
8975 DW_MUTEX_UNLOCK;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8976 DW_LOCAL_POOL_OUT;
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
8977 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
8978 }
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
8979
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
8980 [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
8981
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8982 if(thisbox->count > 1)
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
8983 {
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8984 tmpitem = calloc(sizeof(Item), (thisbox->count-1));
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8985
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8986 /* Copy all but the current entry to the new list */
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8987 for(z=0;z<index;z++)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8988 {
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8989 tmpitem[z] = thisitem[z];
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8990 }
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8991 for(z=index+1;z<thisbox->count;z++)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8992 {
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8993 tmpitem[z-1] = thisitem[z];
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8994 }
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
8995 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8996
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
8997 thisbox->items = tmpitem;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8998 if(thisitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
8999 free(thisitem);
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
9000 if(tmpitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
9001 thisbox->count--;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9002 else
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
9003 thisbox->count = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9004
1654
3d4066aab4e0 Fixed windows not automatically redrawing when removing items from a layout
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1652
diff changeset
9005 /* Queue a redraw on the top-level window */
3d4066aab4e0 Fixed windows not automatically redrawing when removing items from a layout
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1652
diff changeset
9006 _dw_redraw(window, TRUE);
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
9007 }
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
9008 }
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
9009 DW_MUTEX_UNLOCK;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
9010 DW_LOCAL_POOL_OUT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9011 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9012 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9013
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9014 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9015 * 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
9016 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9017 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9018 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9019 * 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
9020 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9021 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
9022 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
9023 id object = _text_handle(handle);
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
9024
808
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
9025 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
9026 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
9027 id window = object;
808
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
9028 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
9029
808
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
9030 return strdup([ nsstr UTF8String ]);
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
9031 }
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
9032 else if([ object isKindOfClass:[ NSControl class ] ])
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9033 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
9034 NSControl *control = object;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9035 NSString *nsstr = [ control stringValue];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9036
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9037 return strdup([ nsstr UTF8String ]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9038 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9039 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9040 }
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9043 * 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
9044 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9045 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9046 * 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
9047 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9048 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
9049 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
9050 id object = _text_handle(handle);
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
9051
807
f7016a38bedd Fix for dw_window_set_text() on buttons not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 806
diff changeset
9052 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
9053 [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
9054 else if([ object isKindOfClass:[ NSControl class ] ])
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9055 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
9056 NSControl *control = object;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9057 [control setStringValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9058 }
953
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
9059 else if([object isMemberOfClass:[DWGroupBox class]])
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
9060 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
9061 DWGroupBox *groupbox = object;
953
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
9062 [groupbox setTitle:[NSString stringWithUTF8String:text]];
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
9063 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9064 else
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9065 return;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9066 /* 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
9067 Item *item = _box_item(handle);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9068
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9069 /* 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
9070 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
9071 {
1792
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9072 int newwidth, newheight;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9073
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9074 _control_size(handle, &newwidth, &newheight);
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9075
1792
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9076 /* Only update the item and redraw the window if it changed */
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9077 if((item->origwidth == -1 && item->width != newwidth) ||
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9078 (item->origheight == -1 && item->height != newheight))
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9079 {
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9080 if(item->origwidth == -1)
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9081 item->width = newwidth;
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9082 if(item->origheight == -1)
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9083 item->height = newheight;
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9084 /* Queue a redraw on the top-level window */
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9085 _dw_redraw([object window], TRUE);
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
9086 }
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
9087 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9088 }
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 /*
1389
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
9091 * 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
9092 * Parameters:
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
9093 * 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
9094 * 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
9095 */
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
9096 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
9097 {
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
9098 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
9099 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
9100 [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
9101 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
9102 [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
9103 }
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
9104
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
9105 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9106 * Disables given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9107 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9108 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9109 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9110 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
9111 {
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
9112 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
9113
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
9114 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
9115 {
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
9116 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
9117 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
9118 }
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
9119 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
9120 {
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
9121 [object setEnabled:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9122 }
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
9123 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
9124 {
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
9125 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
9126
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
9127 [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
9128 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9129 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9130
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9131 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9132 * Enables given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9133 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9134 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9135 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9136 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
9137 {
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
9138 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
9139
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
9140 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
9141 {
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
9142 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
9143 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
9144 }
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
9145 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
9146 {
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
9147 [object setEnabled:YES];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9148 }
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
9149 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
9150 {
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
9151 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
9152
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
9153 [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
9154 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9155 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9156
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9157 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9158 * 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
9159 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9160 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9161 * 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
9162 * (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
9163 * 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
9164 * 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
9165 * 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
9166 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
9167 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
9168 {
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9169 id object = handle;
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9170
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9171 if([ object isKindOfClass:[ NSImageView class ] ] || [ object isKindOfClass:[ NSButton class ]])
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9172 {
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9173 if(data)
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9174 {
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9175 DW_LOCAL_POOL_IN;
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9176 NSData *thisdata = [NSData dataWithBytes:data length:len];
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9177 NSImage *pixmap = [[[NSImage alloc] initWithData:thisdata] autorelease];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9178
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9179 if(pixmap)
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9180 {
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9181 [object setImage:pixmap];
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9182 }
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9183 /* If we changed the bitmap... */
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9184 Item *item = _box_item(handle);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9185
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9186 /* Check to see if any of the sizes need to be recalculated */
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9187 if(item && (item->origwidth == -1 || item->origheight == -1))
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9188 {
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9189 _control_size(handle, item->origwidth == -1 ? &item->width : NULL, item->origheight == -1 ? &item->height : NULL);
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9190 /* Queue a redraw on the top-level window */
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9191 _dw_redraw([object window], TRUE);
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9192 }
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9193 DW_LOCAL_POOL_OUT;
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9194 }
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9195 else
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
9196 dw_window_set_bitmap(handle, cid, NULL);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9197 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9198 }
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9201 * 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
9202 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9203 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9204 * 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
9205 * (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
9206 * 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
9207 * 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
9208 * 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
9209 */
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
9210 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
9211 {
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9212 id object = handle;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
9213 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9214
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9215 if([ object isKindOfClass:[ NSImageView class ] ] || [ object isKindOfClass:[ NSButton class ]])
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9216 {
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
9217 NSImage *bitmap = nil;
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9218
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
9219 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
9220 {
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9221 char *ext = _dw_get_image_extension( filename );
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9222 NSString *nstr = [ NSString stringWithUTF8String:filename ];
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9223
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9224 bitmap = [[[NSImage alloc] initWithContentsOfFile:nstr] autorelease];
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9225
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9226 if(!bitmap && ext)
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9227 {
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9228 nstr = [nstr stringByAppendingString: [NSString stringWithUTF8String:ext]];
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9229 bitmap = [[[NSImage alloc] initWithContentsOfFile:nstr] autorelease];
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9230 }
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9231 }
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9232 if(!bitmap && resid > 0 && resid < 65536)
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
9233 {
1713
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
9234 bitmap = _dw_icon_load(resid);
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
9235 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9236
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
9237 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
9238 {
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9239 [object setImage:bitmap];
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9240
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9241 /* If we changed the bitmap... */
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9242 Item *item = _box_item(handle);
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9243
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9244 /* Check to see if any of the sizes need to be recalculated */
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9245 if(item && (item->origwidth == -1 || item->origheight == -1))
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9246 {
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9247 _control_size(handle, item->origwidth == -1 ? &item->width : NULL, item->origheight == -1 ? &item->height : NULL);
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9248 /* Queue a redraw on the top-level window */
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9249 _dw_redraw([object window], TRUE);
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
9250 }
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
9251 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9252 }
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
9253 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9254 }
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9257 * 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
9258 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9259 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9260 * 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
9261 */
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
9262 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
9263 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9264 /* 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
9265 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9266
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9267 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9268 * 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
9269 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9270 * handle: Handle to the parent window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9271 * id: Integer ID of the child.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9272 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
9273 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
9274 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9275 NSObject *object = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9276 NSView *view = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9277 if([ object isKindOfClass:[ NSWindow class ] ])
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 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9280 view = [window contentView];
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 return [view viewWithTag:cid];
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 * 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
9287 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9288 * handle: The window handle to minimize.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9289 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9290 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
9291 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9292 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9293 [window miniaturize:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9294 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9295 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9296
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9297 /* 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
9298 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9299 * 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
9300 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9301 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
9302 {
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
9303 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
9304 [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
9305 [[window contentView] showWindow];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9306 [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
9307 [window setRedraw:NO];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9308 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9309
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9310 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9311 * Makes the window topmost.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9312 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9313 * 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
9314 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9315 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
9316 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9317 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9318 [window orderFront:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9319 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9320 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9321
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9322 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9323 * Makes the window bottommost.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9324 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9325 * 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
9326 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9327 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
9328 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9329 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9330 [window orderBack:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9331 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9332 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9333
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9334 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9335 * 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
9336 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9337 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9338 * width: New width in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9339 * height: New height in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9340 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9341 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
9342 {
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
9343 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
9344 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9345 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9346
1494
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9347 if([ object isMemberOfClass:[ DWWindow class ] ])
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9348 {
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9349 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
9350 Box *thisbox;
1478
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
9351 NSRect content, frame = NSMakeRect(0, 0, width, height);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9352
1478
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
9353 /* 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
9354 content = [NSWindow contentRectForFrameRect:frame styleMask:[window styleMask]];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9355
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
9356 /*
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
9357 * 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
9358 * 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
9359 */
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
9360 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
9361 {
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
9362 int depth = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9363
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
9364 /* Calculate space requirements */
1446
0d4fdf646caf Fix clang integer conversion warning on 64bit Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1442
diff changeset
9365 _resize_box(thisbox, &depth, (int)width, (int)height, 1);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9366
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
9367 /* 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
9368 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
9369 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
9370 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9371
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
9372 /* 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
9373 [window setContentSize:content.size];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9374 }
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
9375 DW_MUTEX_UNLOCK;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9376 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9377
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9378 /*
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
9379 * 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
9380 * 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
9381 * 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
9382 * 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
9383 * 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
9384 */
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
9385 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
9386 {
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
9387 id object = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9388
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
9389 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
9390 {
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
9391 Box *thisbox;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9392
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
9393 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
9394 {
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
9395 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
9396 NSRect frame;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9397
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
9398 /* 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
9399 _resize_box(thisbox, &depth, 0, 0, 1);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9400
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
9401 /* 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
9402 frame = [NSWindow frameRectForContentRect:NSMakeRect(0, 0, thisbox->minwidth, thisbox->minheight) styleMask:[object styleMask]];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9403
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
9404 /* 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
9405 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
9406 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
9407 }
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
9408 }
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
9409 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
9410 {
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
9411 Box *thisbox;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9412
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
9413 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
9414 {
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
9415 int depth = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9416
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
9417 /* 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
9418 _resize_box(thisbox, &depth, 0, 0, 1);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9419
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
9420 /* 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
9421 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
9422 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
9423 }
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
9424 }
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
9425 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
9426 _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
9427 }
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
9428
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
9429 /*
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9430 * 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
9431 * 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
9432 * Parameters:
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9433 * handle: Window (widget) handle.
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9434 * 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
9435 * 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
9436 */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9437 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
9438 {
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9439 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
9440 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
9441 }
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9442
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9443 /* 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
9444 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
9445 {
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9446 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
9447 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
9448 id object = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9449
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9450 /* Do any gravity calculations */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9451 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
9452 {
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9453 long newx = *x, newy = *y;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9454
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9455 /* Handle horizontal center gravity */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9456 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
9457 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
9458 /* Handle right gravity */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9459 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
9460 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
9461 /* Handle vertical center gravity */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9462 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
9463 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
9464 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
9465 newy = dw_screen_height() - height - *y;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9466
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9467 /* Save the new values */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9468 *x = newx;
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9469 *y = newy;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9470 }
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
9471 /* 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
9472 if((horz | vert) & DW_GRAV_OBSTACLES)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9473 {
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
9474 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
9475 NSRect totalrect = [[object screen] frame];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9476
1494
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9477 if(horz & DW_GRAV_OBSTACLES)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9478 {
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9479 if((horz & 0xf) == DW_GRAV_LEFT)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9480 *x += visiblerect.origin.x;
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9481 else if((horz & 0xf) == DW_GRAV_RIGHT)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9482 *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
9483 }
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9484 if(vert & DW_GRAV_OBSTACLES)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9485 {
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9486 if((vert & 0xf) == DW_GRAV_BOTTOM)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9487 *y += visiblerect.origin.y;
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9488 else if((vert & 0xf) == DW_GRAV_TOP)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
9489 *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
9490 }
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
9491 }
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9492 }
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9493
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9494 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9495 * 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
9496 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9497 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9498 * 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
9499 * 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
9500 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9501 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
9502 {
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
9503 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
9504 DW_MUTEX_LOCK;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9505 NSObject *object = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9506
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
9507 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
9508 {
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
9509 DWWindow *window = handle;
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9510 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
9511 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
9512
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
9513 /* 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
9514 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
9515 {
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
9516 /* 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
9517 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
9518 }
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
9519
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
9520 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
9521 _handle_gravity(handle, &x, &y, (unsigned long)size.width, (unsigned long)size.height);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9522
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9523 point.x = x;
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
9524 point.y = y;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9525
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9526 [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
9527 /* 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
9528 [window setShown:YES];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9529 }
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
9530 DW_MUTEX_UNLOCK;
650
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9533 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9534 * 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
9535 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9536 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9537 * 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
9538 * 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
9539 * width: Width of the widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9540 * height: Height of the widget.
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 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
9543 {
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
9544 dw_window_set_size(handle, width, height);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9545 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
9546 }
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9549 * 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
9550 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9551 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9552 * 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
9553 * 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
9554 * width: Width of the widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9555 * height: Height of the widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9556 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9557 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
9558 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9559 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9560
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9561 if([ object isKindOfClass:[ NSWindow class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9562 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9563 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9564 NSRect rect = [window frame];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9565 if(x)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9566 *x = rect.origin.x;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9567 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
9568 *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
9569 if(width)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9570 *width = rect.size.width;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9571 if(height)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9572 *height = rect.size.height;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9573 return;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9574 }
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
9575 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
9576 {
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
9577 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
9578 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
9579 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
9580 *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
9581 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
9582 *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
9583 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
9584 *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
9585 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
9586 *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
9587 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
9588 }
650
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9591 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9592 * Returns the width of the screen.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9593 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9594 int API dw_screen_width(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9595 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9596 NSRect screenRect = [[NSScreen mainScreen] frame];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9597 return screenRect.size.width;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9598 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9599
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9600 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9601 * Returns the height of the screen.
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 int API dw_screen_height(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9604 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9605 NSRect screenRect = [[NSScreen mainScreen] frame];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9606 return screenRect.size.height;
650
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9609 /* 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
9610 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
9611 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9612 NSWindowDepth screenDepth = [[NSScreen mainScreen] depth];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9613 return NSBitsPerPixelFromDepth(screenDepth);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9614 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9615
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 * 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
9618 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9619 * env: Pointer to a DWEnv struct.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9620 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9621 void dw_environment_query(DWEnv *env)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9622 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9623 struct utsname name;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9624
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9625 uname(&name);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9626 strcpy(env->osName, "MacOS");
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9627
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9628 strcpy(env->buildDate, __DATE__);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9629 strcpy(env->buildTime, __TIME__);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9630 env->DWMajorVersion = DW_MAJOR_VERSION;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9631 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
9632 #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
9633 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
9634 #else
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9635 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
9636 #endif
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9637
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
9638 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
9639 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
9640 env->MajorBuild = DWOSBuild;
809
1ef0f4c03c14 MinorBuild was being left uninitialized.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 808
diff changeset
9641 env->MinorBuild = 0;
650
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9644 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9645 * Emits a beep.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9646 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9647 * freq: Frequency.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9648 * dur: Duration.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9649 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9650 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
9651 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9652 NSBeep();
650
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9655 /* 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
9656 * anything you have drawn is visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9657 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9658 void API dw_flush(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9659 {
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
9660 /* 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
9661 [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
9662 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9663
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9664 /* 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
9665 * 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
9666 * dw_window_get_data().
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9667 */
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9668 UserData *_find_userdata(UserData **root, char *varname)
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9669 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9670 UserData *tmp = *root;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9671
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9672 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9673 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9674 if(strcasecmp(tmp->varname, varname) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9675 return tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9676 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9677 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9678 return NULL;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9679 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9680
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9681 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
9682 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9683 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
9684
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9685 if(new)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9686 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9687 new->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9688 return TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9689 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9690 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9691 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9692 new = malloc(sizeof(UserData));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9693 if(new)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9694 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9695 new->varname = strdup(varname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9696 new->data = data;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9697
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9698 new->next = NULL;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9699
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9700 if (!*root)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9701 *root = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9702 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9703 {
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
9704 UserData *prev = *root, *tmp = prev->next;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9705
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9706 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9707 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9708 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9709 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9710 }
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
9711 prev->next = new;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9712 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9713 return TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9714 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9715 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9716 return FALSE;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9717 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9718
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9719 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
9720 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9721 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
9722
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9723 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9724 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9725 if(all || strcasecmp(tmp->varname, varname) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9726 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9727 if(!prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9728 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9729 *root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9730 free(tmp->varname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9731 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9732 if(!all)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9733 return 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9734 tmp = *root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9735 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9736 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9737 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9738 /* If all is true we should
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9739 * never get here.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9740 */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9741 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9742 free(tmp->varname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9743 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9744 return 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9745 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9746 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9747 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9748 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9749 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9750 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9751 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9752 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9753 return 0;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9754 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9755
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9756 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9757 * 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
9758 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9759 * 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
9760 * 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
9761 * 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
9762 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9763 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
9764 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9765 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
9766 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
9767 {
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9768 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
9769 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
9770 }
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9771 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
9772 {
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
9773 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
9774 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
9775 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9776 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
9777
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9778 if(!blah)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9779 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9780 if(!dataname)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9781 return;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9782
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9783 blah = calloc(1, sizeof(WindowData));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9784 [object setUserdata:blah];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9785 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9786
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9787 if(data)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9788 _new_userdata(&(blah->root), dataname, data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9789 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9790 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9791 if(dataname)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9792 _remove_userdata(&(blah->root), dataname, FALSE);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9793 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9794 _remove_userdata(&(blah->root), NULL, TRUE);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9795 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9796 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9797
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9798 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9799 * 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
9800 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9801 * 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
9802 * 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
9803 * 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
9804 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9805 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
9806 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9807 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
9808 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
9809 {
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9810 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
9811 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
9812 }
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
9813 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
9814 {
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
9815 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
9816 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
9817 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9818 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
9819
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9820 if(blah && blah->root && dataname)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9821 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9822 UserData *ud = _find_userdata(&(blah->root), dataname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9823 if(ud)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9824 return ud->data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9825 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9826 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9827 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9828
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
9829 #define DW_TIMER_MAX 64
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
9830 NSTimer *DWTimers[DW_TIMER_MAX];
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
9831
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9832 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9833 * 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
9834 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9835 * interval: Milliseconds to delay between calls.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9836 * 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
9837 * 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
9838 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9839 * 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
9840 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9841 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
9842 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9843 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9844
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9845 for(z=0;z<DW_TIMER_MAX;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9846 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9847 if(!DWTimers[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9848 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9849 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9850 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9851 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9852
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9853 if(sigfunc && !DWTimers[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9854 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9855 NSTimeInterval seconds = (double)interval / 1000.0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9856 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
9857 _new_signal(0, thistimer, z+1, sigfunc, data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9858 return z+1;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9859 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9860 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9861 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9862
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9863 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9864 * Removes timer callback.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9865 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9866 * 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
9867 */
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
9868 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
9869 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9870 SignalHandler *prev = NULL, *tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9871 NSTimer *thistimer;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9872
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9873 /* 0 is an invalid timer ID */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9874 if(timerid < 1 || !DWTimers[timerid-1])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9875 return;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9876
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9877 thistimer = DWTimers[timerid-1];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9878 DWTimers[timerid-1] = nil;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9879
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9880 [thistimer invalidate];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9881
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9882 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9883 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9884 if(tmp->id == timerid && tmp->window == thistimer)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9885 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9886 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9887 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9888 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9889 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9890 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9891 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9892 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9893 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9894 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9895 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9896 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9897 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9898 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9899 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9900 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9901 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9902 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9903 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9904 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9905 }
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9908 * 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
9909 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9910 * 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
9911 * 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
9912 * 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
9913 * 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
9914 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9915 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
9916 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9917 ULONG message = 0, msgid = 0;
1843
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
9918
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
9919 /* Handle special case of application delete signal */
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
9920 if(!window && signame && strcmp(signame, DW_SIGNAL_DELETE) == 0)
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
9921 {
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
9922 window = DWApp;
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
9923 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9924
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9925 if(window && signame && sigfunc)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9926 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9927 if((message = _findsigmessage(signame)) != 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9928 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9929 _new_signal(message, window, (int)msgid, sigfunc, data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9930 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9931 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9932 }
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 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9935 * 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
9936 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9937 * 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
9938 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9939 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
9940 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9941 SignalHandler *prev = NULL, *tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9942 ULONG message;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9943
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9944 if(!window || !signame || (message = _findsigmessage(signame)) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9945 return;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9946
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9947 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9948 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9949 if(tmp->window == window && tmp->message == message)
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 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9952 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9953 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9954 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9955 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9956 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9957 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9958 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9959 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9960 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9961 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9962 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9963 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9964 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9965 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9966 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9967 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9968 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9969 }
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9972 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9973 * 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
9974 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9975 * 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
9976 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9977 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
9978 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9979 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
9980
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9981 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9982 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9983 if(tmp->window == window)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9984 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9985 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9986 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9987 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9988 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9989 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9990 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9991 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9992 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9993 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9994 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9995 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9996 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9997 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9998 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9999 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10000 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10001 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10002 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10003 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10004 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10005
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10006 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10007 * 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
10008 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10009 * 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
10010 * 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
10011 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10012 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
10013 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10014 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
10015
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10016 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10017 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10018 if(tmp->window == window && tmp->data == data)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10019 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10020 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10021 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10022 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10023 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10024 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10025 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10026 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10027 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10028 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10029 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10030 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10031 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10032 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10033 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10034 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10035 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10036 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10037 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10038 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10039 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10040
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10041 void _my_strlwr(char *buf)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10042 {
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1102
diff changeset
10043 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
10044
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10045 for(z=0;z<len;z++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10046 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10047 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
10048 buf[z] -= 'A' - 'a';
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10049 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10050 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10051
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10052 /* 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
10053 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10054 * 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
10055 * handle: Pointer to a module handle,
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10056 * 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
10057 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10058 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
10059 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10060 int len;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10061 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
10062 char errorbuf[1025];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10063
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10064
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10065 if(!handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10066 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10067
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1102
diff changeset
10068 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
10069 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10070
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10071 /* Lenth + "lib" + ".dylib" + NULL */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10072 newname = malloc(len + 10);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10073
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10074 if(!newname)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10075 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10076
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10077 sprintf(newname, "lib%s.dylib", name);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10078 _my_strlwr(newname);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10079
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10080 *handle = dlopen(newname, RTLD_NOW);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10081 if(*handle == NULL)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10082 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10083 strncpy(errorbuf, dlerror(), 1024);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10084 printf("%s\n", errorbuf);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10085 sprintf(newname, "lib%s.dylib", name);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10086 *handle = dlopen(newname, RTLD_NOW);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10087 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10088
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10089 free(newname);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10090
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10091 return (NULL == *handle) ? -1 : 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10092 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10093
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10094 /* 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
10095 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10096 * 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
10097 * 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
10098 * 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
10099 * the address.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10100 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10101 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
10102 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10103 if(!func || !name)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10104 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10105
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10106 if(strlen(name) == 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10107 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10108
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10109 *func = (void*)dlsym(handle, name);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10110 return (NULL == *func);
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10113 /* Frees the shared library previously opened.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10114 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10115 * 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
10116 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10117 int dw_module_close(HMOD handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10118 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10119 if(handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10120 return dlclose(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10121 return 0;
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10124 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10125 * 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
10126 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10127 HMTX dw_mutex_new(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10128 {
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
10129 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
10130
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
10131 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
10132 return mutex;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10133 }
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 * 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
10137 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10138 * 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
10139 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10140 void dw_mutex_close(HMTX mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10141 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10142 if(mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10143 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10144 pthread_mutex_destroy(mutex);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10145 free(mutex);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10146 }
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
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10149 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10150 * 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
10151 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10152 * 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
10153 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10154 void dw_mutex_lock(HMTX mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10155 {
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
10156 /* 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
10157 * 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
10158 * 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
10159 * 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
10160 */
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
10161 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
10162 {
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
10163 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
10164 {
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
10165 /* 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
10166 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
10167 {
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
10168 /* 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
10169 }
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
10170 }
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
10171 }
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
10172 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
10173 {
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
10174 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
10175 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10176 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10177
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10178 /*
1158
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
10179 * 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
10180 * Parameters:
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
10181 * 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
10182 * Returns:
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
10183 * 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
10184 */
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
10185 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
10186 {
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
10187 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
10188 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
10189 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
10190 }
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
10191
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
10192 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10193 * Reliquishes the access to the semaphore.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10194 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10195 * 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
10196 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10197 void dw_mutex_unlock(HMTX mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10198 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10199 pthread_mutex_unlock(mutex);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10200 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10201
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10202 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10203 * 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
10204 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10205 HEV dw_event_new(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10206 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10207 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
10208
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10209 if(!eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10210 return NULL;
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 /* 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
10213 * 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
10214 * 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
10215 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10216 pthread_mutex_init (&(eve->mutex), NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10217 pthread_mutex_lock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10218 pthread_cond_init (&(eve->event), NULL);
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 pthread_mutex_unlock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10221 eve->alive = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10222 eve->posted = 0;
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 return eve;
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
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 * 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
10229 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10230 * 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
10231 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10232 int dw_event_reset (HEV eve)
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 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
10235 return DW_ERROR_NON_INIT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10236
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10237 pthread_mutex_lock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10238 pthread_cond_broadcast (&(eve->event));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10239 pthread_cond_init (&(eve->event), NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10240 eve->posted = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10241 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
10242 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10243 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10244
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10245 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10246 * 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
10247 * 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
10248 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10249 * 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
10250 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10251 int dw_event_post (HEV eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10252 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10253 if(!eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10254 return FALSE;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10255
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10256 pthread_mutex_lock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10257 pthread_cond_broadcast (&(eve->event));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10258 eve->posted = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10259 pthread_mutex_unlock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10260 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10261 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10262
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10263 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10264 * 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
10265 * 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
10266 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10267 * 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
10268 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10269 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
10270 {
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
10271 int rc;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10272
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
10273 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
10274 return DW_ERROR_NON_INIT;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10275
1202
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
10276 pthread_mutex_lock (&(eve->mutex));
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10277
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
10278 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
10279 {
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
10280 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
10281 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
10282 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10283
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
10284 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
10285 {
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
10286 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
10287 struct timespec timeo;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10288
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
10289 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
10290 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
10291 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
10292 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
10293 }
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
10294 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
10295 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
10296 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
10297 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
10298 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
10299 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
10300 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
10301 return DW_ERROR_GENERAL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10302 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10303
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10304 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10305 * 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
10306 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10307 * 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
10308 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10309 int dw_event_close(HEV *eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10310 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10311 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
10312 return DW_ERROR_NON_INIT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10313
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10314 pthread_mutex_lock (&((*eve)->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10315 pthread_cond_destroy (&((*eve)->event));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10316 pthread_mutex_unlock (&((*eve)->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10317 pthread_mutex_destroy (&((*eve)->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10318 free(*eve);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10319 *eve = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10320
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
10321 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10322 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10323
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10324 struct _seminfo {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10325 int fd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10326 int waiting;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10327 };
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10328
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10329 static void _handle_sem(int *tmpsock)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10330 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10331 fd_set rd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10332 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
10333 int listenfd = tmpsock[0];
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10334 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
10335 char command;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10336 sigset_t mask;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10337
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10338 sigfillset(&mask); /* Mask all allowed signals */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10339 pthread_sigmask(SIG_BLOCK, &mask, NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10340
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10341 /* problems */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10342 if(tmpsock[1] == -1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10343 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10344 free(array);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10345 return;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10346 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10347
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10348 array[0].fd = tmpsock[1];
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10349 array[0].waiting = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10350
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10351 /* 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
10352 free(tmpsock);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10353
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10354 while(1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10355 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10356 FD_ZERO(&rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10357 FD_SET(listenfd, &rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10358
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10359 maxfd = listenfd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10360
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10361 /* 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
10362 for(z=0;z<connectcount;z++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10363 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10364 if(array[z].fd > maxfd)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10365 maxfd = array[z].fd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10366
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10367 FD_SET(array[z].fd, &rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10368 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10369
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10370 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
10371 return;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10372
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10373 if(FD_ISSET(listenfd, &rd))
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10374 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10375 struct _seminfo *newarray;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10376 int newfd = accept(listenfd, 0, 0);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10377
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10378 if(newfd > -1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10379 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10380 /* Add new connections to the set */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10381 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
10382 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
10383
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10384 newarray[connectcount].fd = newfd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10385 newarray[connectcount].waiting = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10386
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10387 connectcount++;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10388
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10389 /* Replace old array with new one */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10390 free(array);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10391 array = newarray;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10392 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10393 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10394
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10395 /* 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
10396 for(z=0;z<connectcount;z++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10397 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10398 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
10399 {
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1102
diff changeset
10400 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
10401 {
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10402 struct _seminfo *newarray = NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10403
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10404 /* Remove this connection from the set */
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10405 if(connectcount > 1)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10406 {
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10407 newarray = (struct _seminfo *)malloc(sizeof(struct _seminfo)*(connectcount-1));
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10408 if(!z)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10409 memcpy(newarray, &array[1], sizeof(struct _seminfo)*(connectcount-1));
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10410 else
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10411 {
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10412 memcpy(newarray, array, sizeof(struct _seminfo)*z);
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10413 if(z!=(connectcount-1))
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10414 memcpy(&newarray[z], &array[z+1], sizeof(struct _seminfo)*(z-connectcount-1));
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10415 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10416 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10417 connectcount--;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10418
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10419 /* Replace old array with new one */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10420 free(array);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10421 array = newarray;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10422 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10423 else if(bytesread == 1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10424 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10425 switch(command)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10426 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10427 case 0:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10428 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10429 /* Reset */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10430 posted = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10431 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10432 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10433 case 1:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10434 /* Post */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10435 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10436 int s;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10437 char tmp = (char)0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10438
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10439 posted = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10440
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10441 for(s=0;s<connectcount;s++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10442 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10443 /* The semaphore has been posted so
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10444 * 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
10445 * continue.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10446 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10447 if(array[s].waiting)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10448 write(array[s].fd, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10449 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10450 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10451 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10452 case 2:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10453 /* Wait */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10454 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10455 char tmp = (char)0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10456
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10457 array[z].waiting = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10458
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10459 /* If we are posted exit immeditately */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10460 if(posted)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10461 write(array[z].fd, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10462 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10463 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10464 case 3:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10465 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10466 /* Done Waiting */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10467 array[z].waiting = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10468 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10469 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10470 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10471 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10472 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10473 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10474 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10475 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10476
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10477 /* 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
10478 /* 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
10479 * opened from other processes.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10480 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10481 * 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
10482 * 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
10483 * by other processes.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10484 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10485 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
10486 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10487 struct sockaddr_un un;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10488 int ev, *tmpsock = (int *)malloc(sizeof(int)*2);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10489 HEV eve;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10490 DWTID dwthread;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10491
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10492 if(!tmpsock)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10493 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10494
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10495 eve = (HEV)malloc(sizeof(struct _dw_unix_event));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10496
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10497 if(!eve)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10498 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10499 free(tmpsock);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10500 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10501 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10502
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10503 tmpsock[0] = socket(AF_UNIX, SOCK_STREAM, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10504 ev = socket(AF_UNIX, SOCK_STREAM, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10505 memset(&un, 0, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10506 un.sun_family=AF_UNIX;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10507 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10508 strcpy(un.sun_path, "/tmp/.dw/");
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10509 strcat(un.sun_path, name);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10510
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10511 /* just to be safe, this should be changed
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10512 * to support multiple instances.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10513 */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10514 remove(un.sun_path);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10515
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10516 bind(tmpsock[0], (struct sockaddr *)&un, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10517 listen(tmpsock[0], 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10518 connect(ev, (struct sockaddr *)&un, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10519 tmpsock[1] = accept(tmpsock[0], 0, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10520
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10521 if(tmpsock[0] < 0 || tmpsock[1] < 0 || ev < 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10522 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10523 if(tmpsock[0] > -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10524 close(tmpsock[0]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10525 if(tmpsock[1] > -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10526 close(tmpsock[1]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10527 if(ev > -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10528 close(ev);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10529 free(tmpsock);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10530 free(eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10531 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10532 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10533
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10534 /* Create a thread to handle this event semaphore */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10535 pthread_create(&dwthread, NULL, (void *)_handle_sem, (void *)tmpsock);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10536 eve->alive = ev;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10537 return eve;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10538 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10539
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10540 /* 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
10541 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10542 * 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
10543 * 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
10544 * by other processes.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10545 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10546 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
10547 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10548 struct sockaddr_un un;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10549 HEV eve;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10550 int ev = socket(AF_UNIX, SOCK_STREAM, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10551 if(ev < 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10552 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10553
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10554 eve = (HEV)malloc(sizeof(struct _dw_unix_event));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10555
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10556 if(!eve)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10557 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10558 close(ev);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10559 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10560 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10561
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10562 un.sun_family=AF_UNIX;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10563 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10564 strcpy(un.sun_path, "/tmp/.dw/");
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10565 strcat(un.sun_path, name);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10566 connect(ev, (struct sockaddr *)&un, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10567 eve->alive = ev;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10568 return eve;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10569 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10570
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10571 /* 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
10572 * on this semaphore will block.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10573 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10574 * 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
10575 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10576 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10577 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
10578 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10579 /* signal reset */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10580 char tmp = (char)0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10581
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10582 if(!eve || eve->alive < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10583 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10584
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10585 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
10586 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10587 return 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10588 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10589
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10590 /* 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
10591 * 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
10592 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10593 * 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
10594 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10595 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10596 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
10597 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10598
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10599 /* signal post */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10600 char tmp = (char)1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10601
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10602 if(!eve || eve->alive < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10603 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10604
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10605 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
10606 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10607 return 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10608 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10609
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10610 /* 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
10611 * 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
10612 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10613 * 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
10614 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10615 * 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
10616 * or -1 if indefinite.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10617 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10618 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
10619 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10620 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
10621 struct timeval tv, *useme = NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10622 int retval = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10623 char tmp;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10624
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10625 if(!eve || eve->alive < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10626 return DW_ERROR_NON_INIT;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10627
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10628 /* 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
10629 if(timeout != -1)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10630 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10631 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
10632 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
10633
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10634 useme = &tv;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10635 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10636
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10637 FD_ZERO(&rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10638 FD_SET(eve->alive, &rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10639
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10640 /* Signal wait */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10641 tmp = (char)2;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10642 write(eve->alive, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10643
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10644 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
10645
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10646 /* Signal done waiting. */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10647 tmp = (char)3;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10648 write(eve->alive, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10649
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10650 if(retval == 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10651 return DW_ERROR_TIMEOUT;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10652 else if(retval == -1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10653 return DW_ERROR_INTERRUPT;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10654
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10655 /* 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
10656 * we don't loop endlessly. :)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10657 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10658 read(eve->alive, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10659 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10660 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10661
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10662 /* 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
10663 * 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
10664 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10665 * 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
10666 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10667 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10668 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
10669 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10670 /* Finally close the domain socket,
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10671 * cleanup will continue in _handle_sem.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10672 */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10673 if(eve)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10674 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10675 close(eve->alive);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10676 free(eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10677 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10678 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10679 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10680
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10681 /* 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
10682 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
10683 {
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10684 #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
10685 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
10686 [pool drain];
698
e19f69a78f21 Fix for pool being removed and not just drained.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
10687 pool = [[NSAutoreleasePool alloc] init];
e19f69a78f21 Fix for pool being removed and not just drained.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
10688 pthread_setspecific(_dw_pool_key, pool);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
10689 #endif
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10690 }
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10691
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10692 /*
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10693 * Setup thread independent pools.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10694 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10695 void _dwthreadstart(void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10696 {
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
10697 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
10698 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
10699 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
10700
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
10701 /* 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
10702 #if !defined(GARBAGE_COLLECT)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10703 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
10704 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
10705 #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
10706 _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
10707
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
10708 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
10709
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
10710 /* 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
10711 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
10712
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
10713 /* 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
10714 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
10715 [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
10716 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
10717 [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
10718 #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
10719 pool = pthread_getspecific(_dw_pool_key);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10720 [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
10721 #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
10722 free(tmp);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10723 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10724
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
10725 /*
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
10726 * 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
10727 * 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
10728 * 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
10729 */
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
10730 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
10731 {
1241
459426f31fb4 Slight thread safety fix on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1239
diff changeset
10732 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
10733 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
10734 [DWDefaultFont retain];
1241
459426f31fb4 Slight thread safety fix on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1239
diff changeset
10735 [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
10736 }
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
10737
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10738 /*
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10739 * 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
10740 * Parameters:
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10741 * 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
10742 * 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
10743 */
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10744 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
10745 {
1786
9a32d4216f24 Make sure we set the locale on Mac and it is UTF-8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1784
diff changeset
10746 char *lang = getenv("LANG");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10747
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
10748 /* 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
10749 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
10750 {
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
10751 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
10752 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
10753
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
10754 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
10755 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10756 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
10757 size_t len = (size_t)(app - pathcopy);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10758
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10759 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
10760 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
10761 *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
10762
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
10763 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
10764
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
10765 /* 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
10766 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
10767 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10768 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
10769
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10770 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
10771 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10772 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
10773 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
10774 }
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
10775 }
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
10776 }
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
10777 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
10778 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
10779 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10780
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
10781 /* 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
10782 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
10783 getcwd(_dw_bundle_path, PATH_MAX);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10784
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
10785 /* Get the operating system version */
1770
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
10786 NSString *version = [[NSProcessInfo processInfo] operatingSystemVersionString];
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
10787 const char *versionstr = [version UTF8String];
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
10788 sscanf(versionstr, "Version %d.%d.%d", &DWOSMajor, &DWOSMinor, &DWOSBuild);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10789 /* Set the locale... if it is UTF-8 pass it
1786
9a32d4216f24 Make sure we set the locale on Mac and it is UTF-8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1784
diff changeset
10790 * directly, otherwise specify UTF-8 explicitly.
9a32d4216f24 Make sure we set the locale on Mac and it is UTF-8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1784
diff changeset
10791 */
9a32d4216f24 Make sure we set the locale on Mac and it is UTF-8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1784
diff changeset
10792 setlocale(LC_ALL, lang && strstr(lang, ".UTF-8") ? lang : "UTF-8");
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
10793 /* 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
10794 DWApp = [NSApplication sharedApplication];
1843
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
10795 DWAppDel *del = [[DWAppDel alloc] init];
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
10796 [DWApp setDelegate:del];
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
10797 /* 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
10798 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
10799 /* 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
10800 #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
10801 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
10802 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
10803 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
10804 #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
10805 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
10806 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
10807 _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
10808 /* 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
10809 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
10810 [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
10811 [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
10812 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
10813 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
10814 /* 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
10815 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
10816 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
10817 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
10818 /* 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
10819 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
10820 [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
10821 [thread release];
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
10822 [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
10823 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
10824 }
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10825
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10826 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10827 * 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
10828 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10829 * 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
10830 * 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
10831 * 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
10832 * 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
10833 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10834 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
10835 {
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
10836 char namebuf[1025] = {0};
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10837 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
10838
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10839 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
10840 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
10841
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10842 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
10843 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10844 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10845 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10846 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10847
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10848 ftruncate(handle->fd, size);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10849
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10850 /* 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
10851 *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
10852
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10853 if(*dest == MAP_FAILED)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10854 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10855 close(handle->fd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10856 *dest = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10857 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10858 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10859 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10860
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10861 handle->size = size;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10862 handle->sid = getsid(0);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10863 handle->path = strdup(namebuf);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10864
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10865 return handle;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10866 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10867
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10868 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10869 * 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
10870 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10871 * 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
10872 * 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
10873 * 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
10874 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10875 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
10876 {
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
10877 char namebuf[1025];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10878 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
10879
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10880 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
10881 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
10882
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10883 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
10884 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10885 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10886 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10887 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10888
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10889 /* 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
10890 *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
10891
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10892 if(*dest == MAP_FAILED)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10893 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10894 close(handle->fd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10895 *dest = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10896 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10897 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10898 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10899
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10900 handle->size = size;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10901 handle->sid = -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10902 handle->path = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10903
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10904 return handle;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10905 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10906
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10907 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10908 * 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
10909 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10910 * 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
10911 * 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
10912 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10913 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
10914 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10915 struct _dw_unix_shm *h = handle;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10916 int rc = munmap(ptr, h->size);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10917
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10918 close(h->fd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10919 if(h->path)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10920 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10921 /* 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
10922 * creator of the file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10923 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10924 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
10925 remove(h->path);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10926 free(h->path);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10927 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10928 return rc;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10929 }
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
10930
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10931 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10932 * 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
10933 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10934 * 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
10935 * 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
10936 * 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
10937 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10938 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
10939 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10940 DWTID thread;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10941 void **tmp = malloc(sizeof(void *) * 2);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10942 int rc;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10943
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10944 tmp[0] = func;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10945 tmp[1] = data;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10946
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10947 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
10948 if(rc == 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10949 return thread;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10950 return (DWTID)-1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10951 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10952
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10953 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10954 * Ends execution of current thread immediately.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10955 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10956 void dw_thread_end(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10957 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10958 pthread_exit(NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10959 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10960
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10961 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10962 * Returns the current thread's ID.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10963 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10964 DWTID dw_thread_id(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10965 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10966 return (DWTID)pthread_self();
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10967 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10968
661
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10969 /*
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10970 * 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
10971 * Parameters:
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10972 * program: Program name with optional path.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10973 * 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
10974 * 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
10975 * Returns:
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10976 * -1 on error.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10977 */
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
10978 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
10979 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10980 int ret = -1;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10981
738
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10982 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
10983 {
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10984 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
10985 {
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10986 [[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
10987 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
10988 }
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10989 else
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10990 {
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10991 [[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
10992 }
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10993 return 0;
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
10994 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10995
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10996 if((ret = fork()) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10997 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10998 int i;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10999
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11000 for (i = 3; i < 256; i++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11001 close(i);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11002 setsid();
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11003
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11004 if(type == DW_EXEC_CON)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11005 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11006 char **tmpargs;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11007
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11008 if(!params)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11009 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11010 tmpargs = malloc(sizeof(char *));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11011 tmpargs[0] = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11012 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11013 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11014 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11015 int z = 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11016
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11017 while(params[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11018 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11019 z++;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11020 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11021 tmpargs = malloc(sizeof(char *)*(z+3));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11022 z=0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11023 tmpargs[0] = "xterm";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11024 tmpargs[1] = "-e";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11025 while(params[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11026 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11027 tmpargs[z+2] = params[z];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11028 z++;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11029 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11030 tmpargs[z+2] = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11031 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11032 execvp("xterm", tmpargs);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11033 free(tmpargs);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11034 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11035 /* If we got here exec failed */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11036 _exit(-1);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11037 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11038 return ret;
661
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
11039 }
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
11040
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
11041 /*
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
11042 * 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
11043 * Parameters:
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
11044 * url: Uniform resource locator.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
11045 */
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
11046 int dw_browse(char *url)
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
11047 {
715
5f8102bd7646 dw_browse() reimplmented so it actually works as expected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 714
diff changeset
11048 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
11049 [[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
11050 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
11051 }
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11052
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11053 typedef struct _dwprint
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11054 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11055 NSPrintInfo *pi;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11056 int (*drawfunc)(HPRINT, HPIXMAP, int, void *);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11057 void *drawdata;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11058 unsigned long flags;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11059 } DWPrint;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11060
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11061 /*
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11062 * 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
11063 * Parameters:
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
11064 * 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
11065 * 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
11066 * 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
11067 * 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
11068 * 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
11069 * Returns:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11070 * 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
11071 */
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
11072 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
11073 {
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11074 DWPrint *print;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11075 NSPrintPanel *panel;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11076 PMPrintSettings settings;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11077 NSPrintInfo *pi;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11078
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11079 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
11080 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11081 return NULL;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11082 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11083
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
11084 if(!jobname)
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
11085 jobname = "Dynamic Windows Print Job";
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11086
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11087 print->drawfunc = drawfunc;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11088 print->drawdata = drawdata;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11089 print->flags = flags;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11090
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11091 /* Get the page range */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11092 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
11093 [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
11094 [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
11095 [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
11096 [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
11097 [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
11098 [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
11099 [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
11100 [pi setTopMargin:0.0];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11101 [pi setBottomMargin:0.0];
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11102
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11103 settings = [pi PMPrintSettings];
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11104 PMSetPageRange(settings, 1, pages);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11105 PMSetFirstPage(settings, 1, true);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11106 PMSetLastPage(settings, pages, true);
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
11107 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
11108 [pi updateFromPMPrintSettings];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11109
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11110 /* Create and show the print panel */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11111 panel = [NSPrintPanel printPanel];
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11112 if(!panel || [panel runModalWithPrintInfo:pi] == NSCancelButton)
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11113 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11114 free(print);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11115 return NULL;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11116 }
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11117 /* 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
11118 print->pi = pi;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11119
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11120 return print;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11121 }
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11122
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11123 /*
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11124 * 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
11125 * Parameters:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11126 * 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
11127 * 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
11128 * Returns:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11129 * 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
11130 */
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11131 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
11132 {
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11133 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
11134 NSBitmapImageRep *rep, *rep2;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11135 NSPrintInfo *pi;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11136 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
11137 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
11138 NSImage *image, *flipped;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11139 NSImageView *iv;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11140 NSSize size;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11141 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
11142 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
11143 UInt32 start, end;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11144
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11145 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
11146 return result;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11147
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
11148 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11149
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11150 /* Figure out the printer/paper size */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11151 pi = p->pi;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11152 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
11153
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
11154 /* 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
11155 settings = [pi PMPrintSettings];
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
11156 PMGetFirstPage(settings, &start);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
11157 if(start > 0)
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
11158 start--;
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
11159 PMGetLastPage(settings, &end);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
11160 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
11161 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
11162 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
11163 [pi updateFromPMPrintSettings];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11164
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11165 /* 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
11166 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
11167 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
11168 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
11169 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
11170 rep2 = pixmap2->image;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11171
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11172 /* Create an image with the data from the pixmap
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11173 * to go into the image view.
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11174 */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11175 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
11176 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
11177 [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
11178 [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
11179 [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
11180 [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
11181 [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
11182 [iv setFrameSize:size];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11183
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11184 /* 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
11185 * 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
11186 */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11187 po = [NSPrintOperation printOperationWithView:iv printInfo:pi];
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11188 [po setShowsPrintPanel:NO];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11189
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11190 /* Cycle through each page */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11191 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
11192 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11193 /* Call the application's draw function */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11194 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
11195 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
11196 {
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
11197 /* 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
11198 _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
11199 #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
11200 /* 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
11201 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
11202 [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
11203 #endif
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
11204 /* 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
11205 [po runOperation];
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
11206 /* 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
11207 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
11208 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
11209 }
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11210 }
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
11211 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
11212 result = DW_ERROR_NONE;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11213 /* 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
11214 [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
11215 [flipped release];
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11216 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
11217 dw_pixmap_destroy(pixmap2);
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11218 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
11219 [iv release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
11220 DW_LOCAL_POOL_OUT;
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
11221 return result;
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11222 }
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11223
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11224 /*
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11225 * 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
11226 * Parameters:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11227 * 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
11228 */
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
11229 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
11230 {
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11231 DWPrint *p = print;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11232
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11233 if(p)
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11234 p->drawfunc = NULL;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11235 }
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
11236
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11237 /*
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11238 * Converts a UTF-8 encoded string into a wide string.
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11239 * Parameters:
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11240 * utf8string: UTF-8 encoded source string.
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11241 * Returns:
1784
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
11242 * Wide string that needs to be freed with dw_free()
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
11243 * or NULL on failure.
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11244 */
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11245 wchar_t * API dw_utf8_to_wchar(char *utf8string)
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11246 {
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11247 size_t buflen = strlen(utf8string) + 1;
1784
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
11248 wchar_t *temp = malloc(buflen * sizeof(wchar_t));
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
11249 if(temp)
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
11250 mbstowcs(temp, utf8string, buflen);
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
11251 return temp;
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11252 }
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11253
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11254 /*
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11255 * Converts a wide string into a UTF-8 encoded string.
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11256 * Parameters:
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11257 * wstring: Wide source string.
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11258 * Returns:
1784
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
11259 * UTF-8 encoded string that needs to be freed with dw_free()
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
11260 * or NULL on failure.
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11261 */
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11262 char * API dw_wchar_to_utf8(wchar_t *wstring)
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11263 {
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11264 size_t bufflen = 8 * wcslen(wstring) + 1;
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11265 char *temp = malloc(bufflen);
1784
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
11266 if(temp)
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
11267 wcstombs(temp, wstring, bufflen);
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11268 return temp;
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
11269 }