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 ]];