mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-31 19:00:47 +00:00
Updates to support services
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@3317 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
9ab3c75337
commit
d438ecfaed
4 changed files with 1353 additions and 620 deletions
|
@ -70,6 +70,7 @@ extern NSString *NSEventTrackingRunLoopMode;
|
||||||
id key_window;
|
id key_window;
|
||||||
id main_window;
|
id main_window;
|
||||||
id delegate;
|
id delegate;
|
||||||
|
id listener;
|
||||||
int window_count;
|
int window_count;
|
||||||
NSMenu *main_menu;
|
NSMenu *main_menu;
|
||||||
NSMenuItem *windows_menu;
|
NSMenuItem *windows_menu;
|
||||||
|
@ -210,7 +211,9 @@ extern NSString *NSEventTrackingRunLoopMode;
|
||||||
- (void)registerServicesMenuSendTypes:(NSArray *)sendTypes
|
- (void)registerServicesMenuSendTypes:(NSArray *)sendTypes
|
||||||
returnTypes:(NSArray *)returnTypes;
|
returnTypes:(NSArray *)returnTypes;
|
||||||
- (NSMenu *)servicesMenu;
|
- (NSMenu *)servicesMenu;
|
||||||
|
- (id)servicesProvider;
|
||||||
- (void)setServicesMenu:(NSMenu *)aMenu;
|
- (void)setServicesMenu:(NSMenu *)aMenu;
|
||||||
|
- (void)setServicesProvider:(id)anObject;
|
||||||
- validRequestorForSendType:(NSString *)sendType
|
- validRequestorForSendType:(NSString *)sendType
|
||||||
returnType:(NSString *)returnType;
|
returnType:(NSString *)returnType;
|
||||||
|
|
||||||
|
@ -331,6 +334,11 @@ BOOL NSPerformService(NSString *item, NSPasteboard *pboard);
|
||||||
//
|
//
|
||||||
void NSUpdateDynamicServices(void);
|
void NSUpdateDynamicServices(void);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Register object to handle services requests.
|
||||||
|
//
|
||||||
|
void
|
||||||
|
NSRegisterServicesProvider(id provider, NSString *name);
|
||||||
|
|
||||||
int NSApplicationMain(int argc, const char **argv);
|
int NSApplicationMain(int argc, const char **argv);
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -59,8 +59,15 @@
|
||||||
#include <Foundation/NSData.h>
|
#include <Foundation/NSData.h>
|
||||||
|
|
||||||
static NSRange MakeRangeFromAbs(int a1,int a2) // not the same as NSMakeRange!
|
static NSRange MakeRangeFromAbs(int a1,int a2) // not the same as NSMakeRange!
|
||||||
{ if(a1< a2) return NSMakeRange(a1,a2-a1);
|
{
|
||||||
else return NSMakeRange(a2,a1-a2);
|
if (a1 < 0)
|
||||||
|
a1 = 0;
|
||||||
|
if (a2 < 0)
|
||||||
|
a2 = 0;
|
||||||
|
if (a1 < a2)
|
||||||
|
return NSMakeRange(a1,a2-a1);
|
||||||
|
else
|
||||||
|
return NSMakeRange(a2,a1-a2);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern BOOL NSEqualRanges(NSRange range1, NSRange range2); // should define in base FIX ME FAR
|
extern BOOL NSEqualRanges(NSRange range1, NSRange range2); // should define in base FIX ME FAR
|
||||||
|
@ -334,9 +341,19 @@ typedef enum
|
||||||
//
|
//
|
||||||
+ (void)initialize
|
+ (void)initialize
|
||||||
{
|
{
|
||||||
if (self == [NSText class])
|
if (self == [NSText class])
|
||||||
{ [self setVersion:1]; // Initial version
|
{
|
||||||
}
|
NSArray *r;
|
||||||
|
NSArray *s;
|
||||||
|
|
||||||
|
[self setVersion:1]; // Initial version
|
||||||
|
|
||||||
|
r = [NSArray arrayWithObjects: NSStringPboardType, nil];
|
||||||
|
s = [NSArray arrayWithObjects: NSStringPboardType, nil];
|
||||||
|
|
||||||
|
[[NSApplication sharedApplication] registerServicesMenuSendTypes: s
|
||||||
|
returnTypes: r];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//<!>
|
//<!>
|
||||||
|
@ -407,6 +424,65 @@ typedef enum
|
||||||
nil];
|
nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Handle enabling/disabling of services menu items.
|
||||||
|
*/
|
||||||
|
- (id) validRequestorForSendType: (NSString*)sendType
|
||||||
|
returnType: (NSString*)returnType
|
||||||
|
{
|
||||||
|
if ((!sendType || [sendType isEqual: NSStringPboardType]) &&
|
||||||
|
(!returnType || [returnType isEqual: NSStringPboardType]))
|
||||||
|
{
|
||||||
|
if (([self selectedRange].length || !sendType) &&
|
||||||
|
([self isEditable] || !returnType))
|
||||||
|
{
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [super validRequestorForSendType: sendType
|
||||||
|
returnType: returnType];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL) readSelectionFromPasteboard: (NSPasteboard*)pb
|
||||||
|
{
|
||||||
|
NSArray *types;
|
||||||
|
NSString *string;
|
||||||
|
NSRange range;
|
||||||
|
|
||||||
|
types = [pb types];
|
||||||
|
if ([types containsObject: NSStringPboardType] == NO)
|
||||||
|
{
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
string = [pb stringForType: NSStringPboardType];
|
||||||
|
range = [self selectedRange];
|
||||||
|
[self deleteRange: range backspace: NO];
|
||||||
|
[self insertText: string];
|
||||||
|
range.length = [string length];
|
||||||
|
[self setSelectedRange: range];
|
||||||
|
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL) writeSelectionToPasteboard: (NSPasteboard*)pb
|
||||||
|
types: (NSArray*)sendTypes
|
||||||
|
{
|
||||||
|
NSArray *types;
|
||||||
|
NSRange range;
|
||||||
|
NSString *string;
|
||||||
|
|
||||||
|
if ([sendTypes containsObject: NSStringPboardType] == NO)
|
||||||
|
{
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
types = [NSArray arrayWithObjects: NSStringPboardType, nil];
|
||||||
|
[pb declareTypes: types owner: nil];
|
||||||
|
range = [self selectedRange];
|
||||||
|
string = [self string];
|
||||||
|
string = [string substringWithRange: range];
|
||||||
|
return [pb setString: string forType: NSStringPboardType];
|
||||||
|
}
|
||||||
|
|
||||||
// <!>
|
// <!>
|
||||||
// handle font pasteboard as well!
|
// handle font pasteboard as well!
|
||||||
|
|
|
@ -1022,7 +1022,17 @@ NSView *v;
|
||||||
- validRequestorForSendType:(NSString *)sendType
|
- validRequestorForSendType:(NSString *)sendType
|
||||||
returnType:(NSString *)returnType
|
returnType:(NSString *)returnType
|
||||||
{
|
{
|
||||||
return nil;
|
id result = nil;
|
||||||
|
|
||||||
|
if (delegate && [delegate respondsToSelector: _cmd])
|
||||||
|
result = [delegate validRequestorForSendType: sendType
|
||||||
|
returnType: returnType];
|
||||||
|
|
||||||
|
if (result == nil)
|
||||||
|
result = [[NSApplication sharedApplication]
|
||||||
|
validRequestorForSendType: sendType
|
||||||
|
returnType: returnType];
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue