Mercurial > dwindows
comparison mac/dw.m @ 2184:8f9a44279ff0
Mac: Add DW_USE_NSVIEW define for enabling NSView based controls. This
makes it easier to change which OS versions are enabling it rather than
using the YOSEMITE define.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 14 Oct 2020 03:27:02 +0000 |
parents | c7713d96e5a9 |
children | 25fc0f438c6d |
comparison
equal
deleted
inserted
replaced
2183:c7713d96e5a9 | 2184:8f9a44279ff0 |
---|---|
50 #define DWCalendarUnitDay NSCalendarUnitDay | 50 #define DWCalendarUnitDay NSCalendarUnitDay |
51 #define DWCalendarUnitMonth NSCalendarUnitMonth | 51 #define DWCalendarUnitMonth NSCalendarUnitMonth |
52 #define DWCalendarUnitYear NSCalendarUnitYear | 52 #define DWCalendarUnitYear NSCalendarUnitYear |
53 #define DWCalendarIdentifierGregorian NSCalendarIdentifierGregorian | 53 #define DWCalendarIdentifierGregorian NSCalendarIdentifierGregorian |
54 #define BUILDING_FOR_YOSEMITE | 54 #define BUILDING_FOR_YOSEMITE |
55 #define DW_USE_NSVIEW | |
55 #else | 56 #else |
56 #define DWModalResponseOK NSOKButton | 57 #define DWModalResponseOK NSOKButton |
57 #define DWModalResponseCancel NSCancelButton | 58 #define DWModalResponseCancel NSCancelButton |
58 #define DWPaperOrientationPortrait NSPortraitOrientation | 59 #define DWPaperOrientationPortrait NSPortraitOrientation |
59 #define DWCalendarUnitDay NSDayCalendarUnit | 60 #define DWCalendarUnitDay NSDayCalendarUnit |
2236 -(id)scrollview { return scrollview; } | 2237 -(id)scrollview { return scrollview; } |
2237 -(void)setScrollview:(id)input { scrollview = input; } | 2238 -(void)setScrollview:(id)input { scrollview = input; } |
2238 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; } | 2239 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; } |
2239 @end | 2240 @end |
2240 | 2241 |
2241 #ifndef BUILDING_FOR_YOSEMITE | 2242 #ifndef DW_USE_NSVIEW |
2242 /* Subclass NSTextFieldCell for displaying image and text */ | 2243 /* Subclass NSTextFieldCell for displaying image and text */ |
2243 @interface DWImageAndTextCell : NSTextFieldCell | 2244 @interface DWImageAndTextCell : NSTextFieldCell |
2244 { | 2245 { |
2245 @private | 2246 @private |
2246 NSImage *image; | 2247 NSImage *image; |
2357 return cellSize; | 2358 return cellSize; |
2358 } | 2359 } |
2359 @end | 2360 @end |
2360 #endif | 2361 #endif |
2361 | 2362 |
2362 #ifdef BUILDING_FOR_YOSEMITE | 2363 #ifdef DW_USE_NSVIEW |
2363 NSTableCellView *_dw_table_cell_view_new(NSImage *icon, NSString *text) | 2364 NSTableCellView *_dw_table_cell_view_new(NSImage *icon, NSString *text) |
2364 { | 2365 { |
2365 NSTableCellView *browsercell = [[[NSTableCellView alloc] init] autorelease]; | 2366 NSTableCellView *browsercell = [[[NSTableCellView alloc] init] autorelease]; |
2366 [browsercell setAutoresizesSubviews:YES]; | 2367 [browsercell setAutoresizesSubviews:YES]; |
2367 if(icon) | 2368 if(icon) |
2463 -(void)doubleClicked:(id)sender; | 2464 -(void)doubleClicked:(id)sender; |
2464 -(void)keyUp:(NSEvent *)theEvent; | 2465 -(void)keyUp:(NSEvent *)theEvent; |
2465 -(void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn; | 2466 -(void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn; |
2466 -(void)selectionChanged:(id)sender; | 2467 -(void)selectionChanged:(id)sender; |
2467 -(NSMenu *)menuForEvent:(NSEvent *)event; | 2468 -(NSMenu *)menuForEvent:(NSEvent *)event; |
2468 #ifdef BUILDING_FOR_YOSEMITE | 2469 #ifdef DW_USE_NSVIEW |
2469 -(void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row; | 2470 -(void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row; |
2470 -(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row; | 2471 -(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row; |
2471 #else | 2472 #else |
2472 -(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row; | 2473 -(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row; |
2473 #endif | 2474 #endif |
2614 } | 2615 } |
2615 return (int)[titles count]; | 2616 return (int)[titles count]; |
2616 } | 2617 } |
2617 return 0; | 2618 return 0; |
2618 } | 2619 } |
2619 #ifdef BUILDING_FOR_YOSEMITE | 2620 #ifdef DW_USE_NSVIEW |
2620 -(void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row | 2621 -(void)tableView:(NSTableView *)tableView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row |
2621 { | 2622 { |
2622 /* Handle drawing alternating row colors if enabled */ | 2623 /* Handle drawing alternating row colors if enabled */ |
2623 if ((row % 2) == 0) | 2624 if ((row % 2) == 0) |
2624 { | 2625 { |
2810 { | 2811 { |
2811 int x; | 2812 int x; |
2812 | 2813 |
2813 for(x=0;x<rowcount;x++) | 2814 for(x=0;x<rowcount;x++) |
2814 { | 2815 { |
2815 #ifdef BUILDING_FOR_YOSEMITE | 2816 #ifdef DW_USE_NSVIEW |
2816 NSTableCellView *cell = [self viewAtColumn:z row:x makeIfNecessary:YES]; | 2817 NSTableCellView *cell = [self viewAtColumn:z row:x makeIfNecessary:YES]; |
2817 int thiswidth = 4, thisheight = 0; | 2818 int thiswidth = 4, thisheight = 0; |
2818 | 2819 |
2819 if([cell imageView]) | 2820 if([cell imageView]) |
2820 { | 2821 { |
2890 NSCell *colcell = [column headerCell]; | 2891 NSCell *colcell = [column headerCell]; |
2891 int width = [colcell cellSize].width; | 2892 int width = [colcell cellSize].width; |
2892 | 2893 |
2893 for(x=0;x<rowcount;x++) | 2894 for(x=0;x<rowcount;x++) |
2894 { | 2895 { |
2895 #ifdef BUILDING_FOR_YOSEMITE | 2896 #ifdef DW_USE_NSVIEW |
2896 NSTableCellView *cell = [self viewAtColumn:z row:x makeIfNecessary:YES]; | 2897 NSTableCellView *cell = [self viewAtColumn:z row:x makeIfNecessary:YES]; |
2897 int thiswidth = 4; | 2898 int thiswidth = 4; |
2898 | 2899 |
2899 if([cell imageView]) | 2900 if([cell imageView]) |
2900 thiswidth += [[cell imageView] image].size.width; | 2901 thiswidth += [[cell imageView] image].size.width; |
3081 NSColor *fgcolor; | 3082 NSColor *fgcolor; |
3082 } | 3083 } |
3083 -(id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item; | 3084 -(id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item; |
3084 -(BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item; | 3085 -(BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item; |
3085 -(int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item; | 3086 -(int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item; |
3086 #ifdef BUILDING_FOR_YOSEMITE | 3087 #ifdef DW_USE_NSVIEW |
3087 -(NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item; | 3088 -(NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item; |
3088 #else | 3089 #else |
3089 -(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item; | 3090 -(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item; |
3090 -(void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item; | 3091 -(void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item; |
3091 #endif | 3092 #endif |
3108 self = [super init]; | 3109 self = [super init]; |
3109 | 3110 |
3110 if (self) | 3111 if (self) |
3111 { | 3112 { |
3112 treecol = [[NSTableColumn alloc] initWithIdentifier:@"_DWTreeColumn"]; | 3113 treecol = [[NSTableColumn alloc] initWithIdentifier:@"_DWTreeColumn"]; |
3113 #ifndef BUILDING_FOR_YOSEMITE | 3114 #ifndef DW_USE_NSVIEW |
3114 DWImageAndTextCell *browsercell = [[[DWImageAndTextCell alloc] init] autorelease]; | 3115 DWImageAndTextCell *browsercell = [[[DWImageAndTextCell alloc] init] autorelease]; |
3115 [treecol setDataCell:browsercell]; | 3116 [treecol setDataCell:browsercell]; |
3116 #endif | 3117 #endif |
3117 [self addTableColumn:treecol]; | 3118 [self addTableColumn:treecol]; |
3118 [self setOutlineTableColumn:treecol]; | 3119 [self setOutlineTableColumn:treecol]; |
3154 else | 3155 else |
3155 { | 3156 { |
3156 return data ? (int)[data count] : 0; | 3157 return data ? (int)[data count] : 0; |
3157 } | 3158 } |
3158 } | 3159 } |
3159 #ifdef BUILDING_FOR_YOSEMITE | 3160 #ifdef DW_USE_NSVIEW |
3160 -(NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item | 3161 -(NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item |
3161 { | 3162 { |
3162 NSTableCellView *view = [outlineView makeViewWithIdentifier:[tableColumn identifier] owner:self]; | 3163 NSTableCellView *view = [outlineView makeViewWithIdentifier:[tableColumn identifier] owner:self]; |
3163 | 3164 |
3164 if([item isKindOfClass:[NSMutableArray class]]) | 3165 if([item isKindOfClass:[NSMutableArray class]]) |
7534 | 7535 |
7535 for(z=0;z<count;z++) | 7536 for(z=0;z<count;z++) |
7536 { | 7537 { |
7537 NSString *title = [NSString stringWithUTF8String:titles[z]]; | 7538 NSString *title = [NSString stringWithUTF8String:titles[z]]; |
7538 NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:title]; | 7539 NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:title]; |
7539 #ifdef BUILDING_FOR_YOSEMITE | 7540 #ifdef DW_USE_NSVIEW |
7540 [column setTitle:title]; | 7541 [column setTitle:title]; |
7541 #else | 7542 #else |
7542 [[column headerCell] setStringValue:title]; | 7543 [[column headerCell] setStringValue:title]; |
7543 if(flags[z] & DW_CFA_BITMAPORICON) | 7544 if(flags[z] & DW_CFA_BITMAPORICON) |
7544 { | 7545 { |
7554 } | 7555 } |
7555 #endif | 7556 #endif |
7556 /* Defaults to left justified so just handle right and center */ | 7557 /* Defaults to left justified so just handle right and center */ |
7557 if(flags[z] & DW_CFA_RIGHT) | 7558 if(flags[z] & DW_CFA_RIGHT) |
7558 { | 7559 { |
7559 #ifndef BUILDING_FOR_YOSEMITE | 7560 #ifndef DW_USE_NSVIEW |
7560 [(NSCell *)[column dataCell] setAlignment:DWTextAlignmentRight]; | 7561 [(NSCell *)[column dataCell] setAlignment:DWTextAlignmentRight]; |
7561 #endif | 7562 #endif |
7562 [(NSCell *)[column headerCell] setAlignment:DWTextAlignmentRight]; | 7563 [(NSCell *)[column headerCell] setAlignment:DWTextAlignmentRight]; |
7563 } | 7564 } |
7564 else if(flags[z] & DW_CFA_CENTER) | 7565 else if(flags[z] & DW_CFA_CENTER) |
7565 { | 7566 { |
7566 #ifndef BUILDING_FOR_YOSEMITE | 7567 #ifndef DW_USE_NSVIEW |
7567 [(NSCell *)[column dataCell] setAlignment:DWTextAlignmentCenter]; | 7568 [(NSCell *)[column dataCell] setAlignment:DWTextAlignmentCenter]; |
7568 #endif | 7569 #endif |
7569 [(NSCell *)[column headerCell] setAlignment:DWTextAlignmentCenter]; | 7570 [(NSCell *)[column headerCell] setAlignment:DWTextAlignmentCenter]; |
7570 } | 7571 } |
7571 [column setEditable:NO]; | 7572 [column setEditable:NO]; |
7715 if(textbuffer[0]) | 7716 if(textbuffer[0]) |
7716 text = [ NSString stringWithUTF8String:textbuffer ]; | 7717 text = [ NSString stringWithUTF8String:textbuffer ]; |
7717 } | 7718 } |
7718 } | 7719 } |
7719 | 7720 |
7720 #ifdef BUILDING_FOR_YOSEMITE | 7721 #ifdef DW_USE_NSVIEW |
7721 object = _dw_table_cell_view_new(icon, text); | 7722 object = _dw_table_cell_view_new(icon, text); |
7722 #else | 7723 #else |
7723 object = icon ? icon : text; | 7724 object = icon ? icon : text; |
7724 #endif | 7725 #endif |
7725 | 7726 |
7782 DW_FUNCTION_NO_RETURN(dw_filesystem_set_file) | 7783 DW_FUNCTION_NO_RETURN(dw_filesystem_set_file) |
7783 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, pointer, void *, row, int, filename, char *, icon, HICN) | 7784 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, pointer, void *, row, int, filename, char *, icon, HICN) |
7784 { | 7785 { |
7785 DW_FUNCTION_INIT; | 7786 DW_FUNCTION_INIT; |
7786 DWContainer *cont = handle; | 7787 DWContainer *cont = handle; |
7787 #ifdef BUILDING_FOR_YOSEMITE | 7788 #ifdef DW_USE_NSVIEW |
7788 NSTableCellView *browsercell; | 7789 NSTableCellView *browsercell; |
7789 #else | 7790 #else |
7790 DWImageAndTextCell *browsercell; | 7791 DWImageAndTextCell *browsercell; |
7791 #endif | 7792 #endif |
7792 int lastadd = 0; | 7793 int lastadd = 0; |
7795 if(pointer) | 7796 if(pointer) |
7796 { | 7797 { |
7797 lastadd = [cont lastAddPoint]; | 7798 lastadd = [cont lastAddPoint]; |
7798 } | 7799 } |
7799 | 7800 |
7800 #ifdef BUILDING_FOR_YOSEMITE | 7801 #ifdef DW_USE_NSVIEW |
7801 browsercell = _dw_table_cell_view_new(icon, [NSString stringWithUTF8String:filename]); | 7802 browsercell = _dw_table_cell_view_new(icon, [NSString stringWithUTF8String:filename]); |
7802 #else | 7803 #else |
7803 browsercell = [[[DWImageAndTextCell alloc] init] autorelease]; | 7804 browsercell = [[[DWImageAndTextCell alloc] init] autorelease]; |
7804 [browsercell setImage:icon]; | 7805 [browsercell setImage:icon]; |
7805 [browsercell setStringValue:[ NSString stringWithUTF8String:filename ]]; | 7806 [browsercell setStringValue:[ NSString stringWithUTF8String:filename ]]; |