mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-31 04:44:14 -04:00 
			
		
		
		
	added files via upload
This commit is contained in:
		
							
								
								
									
										70
									
								
								Tweaks/FLEX/Editing/FLEXArgumentInputViewFactory.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								Tweaks/FLEX/Editing/FLEXArgumentInputViewFactory.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| // | ||||
| //  FLEXArgumentInputViewFactory.m | ||||
| //  FLEXInjected | ||||
| // | ||||
| //  Created by Ryan Olson on 6/15/14. | ||||
| // | ||||
| // | ||||
|  | ||||
| #import "FLEXArgumentInputViewFactory.h" | ||||
| #import "FLEXArgumentInputView.h" | ||||
| #import "FLEXArgumentInputObjectView.h" | ||||
| #import "FLEXArgumentInputNumberView.h" | ||||
| #import "FLEXArgumentInputSwitchView.h" | ||||
| #import "FLEXArgumentInputStructView.h" | ||||
| #import "FLEXArgumentInputNotSupportedView.h" | ||||
| #import "FLEXArgumentInputStringView.h" | ||||
| #import "FLEXArgumentInputFontView.h" | ||||
| #import "FLEXArgumentInputColorView.h" | ||||
| #import "FLEXArgumentInputDateView.h" | ||||
| #import "FLEXRuntimeUtility.h" | ||||
|  | ||||
| @implementation FLEXArgumentInputViewFactory | ||||
|  | ||||
| + (FLEXArgumentInputView *)argumentInputViewForTypeEncoding:(const char *)typeEncoding { | ||||
|     return [self argumentInputViewForTypeEncoding:typeEncoding currentValue:nil]; | ||||
| } | ||||
|  | ||||
| + (FLEXArgumentInputView *)argumentInputViewForTypeEncoding:(const char *)typeEncoding currentValue:(id)currentValue { | ||||
|     Class subclass = [self argumentInputViewSubclassForTypeEncoding:typeEncoding currentValue:currentValue]; | ||||
|     if (!subclass) { | ||||
|         // Fall back to a FLEXArgumentInputNotSupportedView if we can't find a subclass that fits the type encoding. | ||||
|         // The unsupported view shows "nil" and does not allow user input. | ||||
|         subclass = [FLEXArgumentInputNotSupportedView class]; | ||||
|     } | ||||
|     // Remove the field name if there is any (e.g. \"width\"d -> d) | ||||
|     const NSUInteger fieldNameOffset = [FLEXRuntimeUtility fieldNameOffsetForTypeEncoding:typeEncoding]; | ||||
|     return [[subclass alloc] initWithArgumentTypeEncoding:typeEncoding + fieldNameOffset]; | ||||
| } | ||||
|  | ||||
| + (Class)argumentInputViewSubclassForTypeEncoding:(const char *)typeEncoding currentValue:(id)currentValue { | ||||
|     // Remove the field name if there is any (e.g. \"width\"d -> d) | ||||
|     const NSUInteger fieldNameOffset = [FLEXRuntimeUtility fieldNameOffsetForTypeEncoding:typeEncoding]; | ||||
|     Class argumentInputViewSubclass = nil; | ||||
|     NSArray<Class> *inputViewClasses = @[[FLEXArgumentInputColorView class], | ||||
|                                          [FLEXArgumentInputFontView class], | ||||
|                                          [FLEXArgumentInputStringView class], | ||||
|                                          [FLEXArgumentInputStructView class], | ||||
|                                          [FLEXArgumentInputSwitchView class], | ||||
|                                          [FLEXArgumentInputDateView class], | ||||
|                                          [FLEXArgumentInputNumberView class], | ||||
|                                          [FLEXArgumentInputObjectView class]]; | ||||
|  | ||||
|     // Note that order is important here since multiple subclasses may support the same type. | ||||
|     // An example is the number subclass and the bool subclass for the type @encode(BOOL). | ||||
|     // Both work, but we'd prefer to use the bool subclass. | ||||
|     for (Class inputViewClass in inputViewClasses) { | ||||
|         if ([inputViewClass supportsObjCType:typeEncoding + fieldNameOffset withCurrentValue:currentValue]) { | ||||
|             argumentInputViewSubclass = inputViewClass; | ||||
|             break; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return argumentInputViewSubclass; | ||||
| } | ||||
|  | ||||
| + (BOOL)canEditFieldWithTypeEncoding:(const char *)typeEncoding currentValue:(id)currentValue { | ||||
|     return [self argumentInputViewSubclassForTypeEncoding:typeEncoding currentValue:currentValue] != nil; | ||||
| } | ||||
|  | ||||
| @end | ||||
		Reference in New Issue
	
	Block a user
	 Balackburn
					Balackburn