annotate foosdk/sdk/foobar2000/helpers-mac/NSView+ppsubviews.m @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #import "NSView+ppsubviews.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #if 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 @implementation NSView (ppsubviews)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 - (NSView*) recurFindSubViewOfClass: (Class) cls identifier: (NSString*) identifier {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 return NSViewFindSubViewRecursive ( self, cls, identifier );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 - (NSView*) findSubViewOfClass: (Class) cls identifier: (NSString*) identifier {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 return NSViewFindSubView( self, cls, identifier );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 - (NSView *)findSubViewOfClass:(Class)cls {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 return NSViewFindSubView( self, cls, nil );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 - (NSButton *)findButton {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 return (NSButton*) [self findSubViewOfClass: [NSButton class]];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 - (NSTextView *)findTextView {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 return (NSTextView*) [self findSubViewOfClass: [NSTextView class]];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 - (NSTextField *) findTextField {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 return (NSTextField*) [self findSubViewOfClass: [NSTextField class]];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 - (NSImageView*) findImageView {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 return (NSImageView*) [self findSubViewOfClass: [NSImageView class]];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 @end
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 __kindof NSView * NSViewFindSubView( NSView * parent, Class cls, NSUserInterfaceItemIdentifier identifier ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 for (__kindof NSView * v in parent.subviews) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 if ( (cls == nil || [v isKindOfClass: cls]) && ( identifier == nil || [ v.identifier isEqualToString: identifier ] ) ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 return v;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 return nil;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 __kindof NSView * NSViewFindSubViewRecursive( NSView * parent, Class cls, NSUserInterfaceItemIdentifier identifier ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 @autoreleasepool {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 NSMutableArray<__kindof NSView*> * arrAll = [NSMutableArray arrayWithArray: parent.subviews];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 for ( NSUInteger w = 0; w < arrAll.count; ++ w ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 __kindof NSView * thisView = arrAll[w];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 if ( (cls == nil || [thisView isKindOfClass: cls]) && ( identifier == nil || [thisView.identifier isEqualToString: identifier] ) ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 return thisView;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 [arrAll addObjectsFromArray: thisView.subviews];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 if ( w >= 200 ) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 [arrAll removeObjectsInRange: NSMakeRange(0, w) ];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 w = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 return nil;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 }