Revision: 14566
http://sourceforge.net/p/skim-app/code/14566
Author: hofman
Date: 2024-10-21 21:57:32 +0000 (Mon, 21 Oct 2024)
Log Message:
-----------
Add a chooseFile: action for context menu of drag image view
Modified Paths:
--------------
trunk/SKDragImageView.h
trunk/SKDragImageView.m
Modified: trunk/SKDragImageView.h
===================================================================
--- trunk/SKDragImageView.h 2024-10-21 21:23:51 UTC (rev 14565)
+++ trunk/SKDragImageView.h 2024-10-21 21:57:32 UTC (rev 14566)
@@ -50,6 +50,7 @@
- (IBAction)show:(nullable id)sender;
- (IBAction)togglePreviewPanel:(nullable id)sender;
+- (IBAction)chooseFile:(id)sender;
@end
Modified: trunk/SKDragImageView.m
===================================================================
--- trunk/SKDragImageView.m 2024-10-21 21:23:51 UTC (rev 14565)
+++ trunk/SKDragImageView.m 2024-10-21 21:57:32 UTC (rev 14566)
@@ -59,11 +59,45 @@
[[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFront:nil];
}
+- (IBAction)chooseFile:(id)sender {
+ NSOpenPanel *oPanel = [NSOpenPanel openPanel];
+ [oPanel setAllowedFileTypes:[NSImage imageTypes]];
+ [oPanel beginSheetModalForWindow:[self window]
completionHandler:^(NSModalResponse result){
+ if (result == NSModalResponseOK) {
+ NSURL *fileURL = [[oPanel URLs] firstObject];
+ if (fileURL) {
+ NSImage *image = [[NSImage alloc]
initWithContentsOfURL:fileURL];
+ if (image) {
+ [self setImage:image];
+ NSDictionary *info = [self infoForBinding:NSValueBinding];
+ if (info) {
+ id observedObject = [info
objectForKey:NSObservedObjectKey];
+ NSString *observedKeyPath = [info
objectForKey:NSObservedKeyPathKey];
+ if (observedObject && observedKeyPath) {
+ id value = image;
+ NSValueTransformer *valueTransformer = [[info
objectForKey:NSOptionsKey] objectForKey:NSValueTransformerBindingOption];
+ if (valueTransformer == nil || [valueTransformer
isEqual:[NSNull null]]) {
+ NSString *transformerName = [[info
objectForKey:NSOptionsKey] objectForKey:NSValueTransformerNameBindingOption];
+ if (transformerName && [transformerName
isEqual:[NSNull null]] == NO)
+ valueTransformer = [NSValueTransformer
valueTransformerForName:transformerName];
+ }
+ if (valueTransformer && [valueTransformer
isEqual:[NSNull null]] == NO &&
+ [[valueTransformer class]
allowsReverseTransformation])
+ value = [valueTransformer
reverseTransformedValue:value];
+ [observedObject setValue:value
forKeyPath:observedKeyPath];
+ }
+ }
+ }
+ }
+ }
+ }];
+}
+
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
SEL action = [menuItem action];
if (action == @selector(cut:) || action == @selector(copy:) || action ==
@selector(delete:) || action == @selector(show:) || action ==
@selector(togglePreviewPanel:))
return [self image] != nil && [self isEditable];
- else if (action == @selector(paste:))
+ else if (action == @selector(paste:) || action == @selector(chooseFile:))
return [self isEditable];
else if ([[SKDragImageView superclass] instancesRespondToSelector:_cmd])
[super validateMenuItem:menuItem];
@@ -79,6 +113,7 @@
[menu addItemWithTitle:NSLocalizedString(@"Delete", @"Menu item
title") action:@selector(delete:) target:self];
[menu addItemWithTitle:NSLocalizedString(@"Show", @"Menu item title")
action:@selector(show:) target:self];
[menu addItemWithTitle:NSLocalizedString(@"Quick Look", @"Menu item
title") action:@selector(togglePreviewPanel:) target:self];
+ [menu addItemWithTitle:NSLocalizedString(@"Choose File", @"Menu item
title") action:@selector(chooseFile:) target:self];
[self setMenu:menu];
}
menu = [menu copy];
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit