Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

LinkBack 1.0.2 from <http://linkbackproject.org/files/LinkBack-102.zip>

  • Loading branch information...
commit fcc2958a0cc7c22524f296769f6bd0a5bff26416 1 parent a6bc51c
@tjw tjw authored
View
71 LinkBack Release Notes.rtf
@@ -1,16 +1,55 @@
-{\rtf1\mac\ansicpg10000\cocoartf809
-{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-{\info}\margl1440\margr1440\vieww9000\viewh8400\viewkind0
-\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
-
-\f0\b\fs24 \cf0 LinkBack Release Notes\
-
-\f1\b0 \
-LinkBack: \
-\
-LinkBack: version number included in linkback data \
-\
-LiveSketch: SKTGraphicView.m:1067 -- LiveSketch did not declare the LinkBackPboardType during a copy operation. This did not cause incorrect behavior, but it was technically incorrect.\
- \
-1.0alpha -- initial public release}
+{\rtf1 \mac \ansicpg437 \cocoartf102 {\fonttbl {\f0 \fnil \fcharset77 Times New Roman{\*\falt Times}
+;}
+{\f1 \fnil \fcharset77 Helvetica-Bold{\*\falt Helvetica}
+;}
+{\f2 \fnil \fcharset77 Helvetica;}
+{\f3 \fnil \fcharset77 LucidaGrande{\*\falt Lucida Grande}
+;}
+}
+{\colortbl ;\red0 \green0 \blue0 ;}
+{\stylesheet {\s3 \nisusnoteplacement0 \nisusreferencestyle7 {\*\nsmpltxt Some text goes here so you can see what your style will look like.}
+\f3 footnote text;}
+{\s4 \nisusnoteplacement1 \nisusreferencestyle9 {\*\nsmpltxt Sample text for Foot/End Notes Style}
+\f3 endnote text;}
+}
+\deftab720 \defformat \viewkind1 \viewzk1 {\*\nisuswindow \x70 \y232 \w741 \h638 }
+\nshwinv0 \nshwpg1 \hyphauto0 \ftnnar \endnotes \aendnotes \aftnnar \fet2 \ftnbj \paperw12240 \paperh15840 \margl1440 \margr1440 \margt1440 \margb1440 \gutter0 \pgnstart1 \nocolbal \sectd \sbknone \cols1 \ltrsect \colbalsxn0 \marglsxn1440 \margrsxn1440 \margtsxn1440 \margbsxn1440 \guttersxn0 \headery720 \footery720 \pgnstarts1 \pgnrestart \pgndec \sxnstarts1 \sxnrestart \sxndec {\header \par }
+{\footer \par }
+{\pard \ql \sb0 \sa0 \sl240 \slmult1 \ilvl0 \li0 \lin0 \fi0 \ri0 \rin0 {\f1 \fs24 \b \cf1 LinkBack Release Notes\par
+\f2 \b0 \par
+\b LINKBACK 102:\par
+\b0 \par
+\b LinkBack:\b0 LinkBack has several helper methods to make it easier for you to add a menu item in clients to edit LinkBack content. Two functions and one method provide the localized string for the menu name. You should place the menu at the bottom of your edit menu with a separator before it. Make your validateMenuItem: set the menu title based on the current selection. You should set your title based on the number of LinkBack items selected:\par
+\par
+}
+}
+{\pard \ql \sb0 \sa0 \sl240 \slmult1 \ilvl0 \li0 \lin0 \fi0 \ri0 \rin0 \tqc \tx2520 \tx4820 {\f2 \fs24 \b0 \cf1 \tab \b LINKBACK \par
+}
+}
+{\pard \ql \sb0 \sa0 \sl240 \slmult1 \ilvl0 \li0 \lin0 \fi0 \ri0 \rin0 \tqc \tx2520 \tx4300 {\f2 \fs24 \b \cf1 \tab ITEMS SELECTED\tab USE METHOD/FUNCTION\par
+\b0 \tab 0\tab LinkBackEditNoneMenuTitle() \par
+\tab 1\tab [linkbackdata linkBackMenuTitle] ;\par
+\tab > 1\tab LinkBackEditMultipleMenuTitle()\par
+}
+}
+{\pard \ql \sb0 \sa0 \sl240 \slmult1 \ilvl0 \li0 \lin0 \fi0 \ri0 \rin0 {\f2 \fs24 \b0 \cf1 \par
+When the user chooses this menu item, your code should request edits for any selected LinkBack items. If no LinkBack items are selected, be sure to disable the menu. \par
+\par
+See Document.m in TextEdit+LinkBack for an example of how to do all this.\par
+\par
+\b LinkBack:\b0 LinkBack now includes the name of the application and an optional ACTION NAME in the data you place on the keyboard. You can provide the action name or use one of the two standard action names defined in LinkBack.h. This action name will be used to construct the LinkBack menu name in client applications. If you use one of the standard names, (Edit or Refresh) it will be localized.\par
+\par
+\b LinkBack:\b0 Added a new NSDictionary category with methods for creating and accessing the linkback data you create to put on the pasteboard. You can still use the original functions to create linkback data, but using these methods will give you access to more information about the LinkBack including the source application, action name, source URL and so on.\par
+\par
+\b LiveSketch:\b0 now includes Linkback information in its application dictionary. Will be used by LinkBack in the future.\par
+\par
+\b TextEdit+LinkBack:\b0 now includes support for the an Edit LinkBack Items menu. See Document.m -validateMenuItem: and -editLinkBackItems: for examples of how to do this.\par
+\par
+\b LINKBACK 101\b0 \par
+LinkBack: version number included in linkback data \par
+\par
+LiveSketch: SKTGraphicView.m:1067 -- LiveSketch did not declare the LinkBackPboardType during a copy operation. This did not cause incorrect behavior, but it was technically incorrect.\par
+ \par
+1.0alpha -- initial public release}
+}
+}
View
4 LiveSketch/Sketch.pbxproj/project.pbxproj
@@ -853,6 +853,10 @@
<string>lskt</string>
<key>CFBundleVersion</key>
<string>alpha.01</string>
+ <key>LinkBackApplicationURL</key>
+ <string>http://www.linkbackproject.org</string>
+ <key>LinkBackVersion</key>
+ <string>A</string>
<key>NSAppleScriptEnabled</key>
<string>YES</string>
<key>NSMainNibFile</key>
View
5 Source/English.lproj/Localized.strings
@@ -0,0 +1,5 @@
+"_EditPattern" = "%@ in %@" ;
+"_EditMultiple" = "Edit LinkBack Items" ;
+"_EditNone" = "Edit LinkBack Item" ;
+"_Edit" = "Edit" ;
+"_Refresh" = "Refresh" ;
View
4 Source/Info.plist
@@ -9,7 +9,7 @@
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
- <string>com.yourcompany.yourcocoaframework</string>
+ <string>org.linkbackproject.LinkBack</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
@@ -17,7 +17,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>1.0</string>
+ <string>102</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
View
43 Source/LinkBack.h
@@ -39,22 +39,51 @@
// Use this pasteboard type to put LinkBack data to the pasteboard. Use MakeLinkBackData() to create the data.
extern NSString* LinkBackPboardType ;
-// LinkBack data keys. These are used in a LiveLInk object, which is currently a dictionary. Do not depend on these values. They are public for testing purposes only.
-extern NSString* LinkBackServerNameKey ;
-extern NSString* LinkBackServerBundleIdentifierKey ;
-extern NSString* LinkBackVersionKey ;
-extern NSString* LinkBackApplicationDataKey ;
+// Default Action Names. These will be localized for you automatically.
+extern NSString* LinkBackEditActionName ;
+extern NSString* LinkBackRefreshActionName ;
//
// Support Functions
//
+NSString* LinkBackUniqueItemKey() ;
+NSString* LinkBackEditMultipleMenuTitle() ;
+NSString* LinkBackEditNoneMenuTitle() ;
+//
+// Deprecated Support Functions -- use LinkBack Data Category instead
+//
id MakeLinkBackData(NSString* serverName, id appData) ;
id LinkBackGetAppData(id linkBackData) ;
-
BOOL LinkBackDataBelongsToActiveApplication(id data) ;
-NSString* LinkBackUniqueItemKey() ;
+//
+// LinkBack Data Category
+//
+
+// Use these methods to create and access linkback data objects. You can also use the helper functions above.
+
+@interface NSDictionary (LinkBackData)
+
++ (NSDictionary*)linkBackDataWithServerName:(NSString*)serverName appData:(id)appData ;
+
++ (NSDictionary*)linkBackDataWithServerName:(NSString*)serverName appData:(id)appData suggestedRefreshRate:(NSTimeInterval)rate ;
+
++ (NSDictionary*)linkBackDataWithServerName:(NSString*)serverName appData:(id)appData actionName:(NSString*)action suggestedRefreshRate:(NSTimeInterval)rate ;
+
+- (BOOL)linkBackDataBelongsToActiveApplication ;
+
+- (id)linkBackAppData ;
+- (NSString*)linkBackSourceApplicationName ;
+- (NSString*)linkBackActionName ;
+- (NSString*)linkBackVersion ;
+- (NSURL*)linkBackApplicationURL ;
+
+- (NSTimeInterval)linkBackSuggestedRefreshRate ;
+
+- (NSString*)linkBackEditMenuTitle ;
+
+@end
//
// Delegate Protocols
View
135 Source/LinkBack.m
@@ -39,10 +39,17 @@
NSString* LinkBackPboardType = @"LinkBackData" ;
// LinkBack data keys. These are used in a LinkBack object, which is currently a dictionary. Do not depend on these values. They are public for testing purposes only.
+NSString* LinkBackServerActionKey = @"serverActionKey" ;
+NSString* LinkBackServerApplicationNameKey = @"serverAppName" ;
NSString* LinkBackServerNameKey = @"serverName" ;
NSString* LinkBackServerBundleIdentifierKey = @"bundleId" ;
NSString* LinkBackVersionKey = @"version" ;
NSString* LinkBackApplicationDataKey = @"appData" ;
+NSString* LinkBackSuggestedRefreshKey = @"refresh" ;
+NSString* LinkBackApplicationURLKey = @"ApplicationURL" ;
+
+NSString* LinkBackEditActionName = @"_Edit" ;
+NSString* LinkBackRefreshActionName = @"_Refresh" ;
// ...........................................................................
// Support Functions
@@ -50,20 +57,12 @@
id MakeLinkBackData(NSString* serverName, id appData)
{
- NSMutableDictionary* ret = [[NSMutableDictionary alloc] init] ;
- NSString* bundleId = [[NSBundle mainBundle] bundleIdentifier] ;
- id version = @"A" ;
-
- [ret setObject: bundleId forKey: LinkBackServerBundleIdentifierKey];
- [ret setObject: serverName forKey: LinkBackServerNameKey] ;
- [ret setObject: version forKey: LinkBackVersionKey] ;
- [ret setObject: appData forKey: LinkBackApplicationDataKey] ;
- return [ret autorelease] ;
+ return [NSDictionary linkBackDataWithServerName: serverName appData: appData] ;
}
id LinkBackGetAppData(id LinkBackData)
{
- return [LinkBackData objectForKey: LinkBackApplicationDataKey] ;
+ return [LinkBackData linkBackAppData] ;
}
NSString* LinkBackUniqueItemKey()
@@ -77,11 +76,125 @@ id LinkBackGetAppData(id LinkBackData)
BOOL LinkBackDataBelongsToActiveApplication(id data)
{
+ return [data linkBackDataBelongsToActiveApplication] ;
+}
+
+NSString* LinkBackEditMultipleMenuTitle()
+{
+ NSBundle* bundle = [NSBundle bundleForClass: [LinkBack class]] ;
+ NSString* ret = [bundle localizedStringForKey: @"_EditMultiple" value: @"Edit LinkBack Items" table: @"Localized"] ;
+ return ret ;
+}
+
+NSString* LinkBackEditNoneMenuTitle()
+{
+ NSBundle* bundle = [NSBundle bundleForClass: [LinkBack class]] ;
+ NSString* ret = [bundle localizedStringForKey: @"_EditNone" value: @"Edit LinkBack Item" table: @"Localized"] ;
+ return ret ;
+}
+
+// ...........................................................................
+// LinkBack Data Category
+//
+
+// Use these methods to create and access linkback data objects. You can also use the helper functions above.
+
+@implementation NSDictionary (LinkBackData)
+
++ (NSDictionary*)linkBackDataWithServerName:(NSString*)serverName appData:(id)appData
+{
+ return [self linkBackDataWithServerName: serverName appData: appData actionName: nil suggestedRefreshRate: 0];
+}
+
++ (NSDictionary*)linkBackDataWithServerName:(NSString*)serverName appData:(id)appData suggestedRefreshRate:(NSTimeInterval)rate
+{
+ return [self linkBackDataWithServerName: serverName appData: appData actionName: LinkBackRefreshActionName suggestedRefreshRate: rate] ;
+}
+
++ (NSDictionary*)linkBackDataWithServerName:(NSString*)serverName appData:(id)appData actionName:(NSString*)action suggestedRefreshRate:(NSTimeInterval)rate ;
+{
+ NSDictionary* appInfo = [[NSBundle mainBundle] infoDictionary] ;
+
+ NSMutableDictionary* ret = [[NSMutableDictionary alloc] init] ;
+ NSString* bundleId = [[NSBundle mainBundle] bundleIdentifier] ;
+ NSString* url = [appInfo objectForKey: @"LinkBackApplicationURL"] ;
+ NSString* appName = [[[NSWorkspace sharedWorkspace] activeApplication] objectForKey: @"NSApplicationName"] ;
+ id version = @"A" ;
+
+ if (nil==serverName) [NSException raise: NSInvalidArgumentException format: @"LinkBack Data cannot be created without a server name."] ;
+
+ // callback information
+ [ret setObject: bundleId forKey: LinkBackServerBundleIdentifierKey];
+ [ret setObject: serverName forKey: LinkBackServerNameKey] ;
+ [ret setObject: version forKey: LinkBackVersionKey] ;
+
+ // additional information
+ if (appName) [ret setObject: appName forKey: LinkBackServerApplicationNameKey] ;
+ if (action) [ret setObject: action forKey: LinkBackServerActionKey] ;
+ if (appData) [ret setObject: appData forKey: LinkBackApplicationDataKey] ;
+ if (url) [ret setObject: url forKey: LinkBackApplicationURLKey] ;
+ [ret setObject: [NSNumber numberWithFloat: rate] forKey: LinkBackSuggestedRefreshKey] ;
+
+ return [ret autorelease] ;
+}
+
+- (BOOL)linkBackDataBelongsToActiveApplication
+{
NSString* bundleId = [[NSBundle mainBundle] bundleIdentifier] ;
- NSString* dataId = ([data isKindOfClass: [NSDictionary class]]) ? [data objectForKey: LinkBackServerBundleIdentifierKey] : nil ;
+ NSString* dataId = [self objectForKey: LinkBackServerBundleIdentifierKey] ;
return (dataId && [dataId isEqualToString: bundleId]) ;
}
+- (id)linkBackAppData
+{
+ return [self objectForKey: LinkBackApplicationDataKey] ;
+}
+
+- (NSString*)linkBackSourceApplicationName
+{
+ return [self objectForKey: LinkBackServerApplicationNameKey] ;
+}
+
+- (NSString*)linkBackActionName
+{
+ NSBundle* bundle = [NSBundle bundleForClass: [LinkBack class]] ;
+ NSString* ret = [self objectForKey: LinkBackServerActionKey] ;
+ if (nil==ret) ret = LinkBackEditActionName ;
+
+ ret = [bundle localizedStringForKey: ret value: ret table: @"Localized"] ;
+ return ret ;
+}
+
+- (NSString*)linkBackEditMenuTitle
+{
+ NSBundle* bundle = [NSBundle bundleForClass: [LinkBack class]] ;
+ NSString* appName = [self linkBackSourceApplicationName] ;
+ NSString* action = [self linkBackActionName] ;
+ NSString* ret = [bundle localizedStringForKey: @"_EditPattern" value: @"%@ in %@" table: @"Localized"] ;
+ ret = [NSString stringWithFormat: ret, action, appName] ;
+ return ret ;
+}
+
+- (NSString*)linkBackVersion
+{
+ return [self objectForKey: LinkBackVersionKey] ;
+}
+
+- (NSTimeInterval)linkBackSuggestedRefreshRate
+{
+ id obj = [self objectForKey: LinkBackSuggestedRefreshKey] ;
+ return (obj) ? [obj floatValue] : 0 ;
+}
+
+- (NSURL*)linkBackApplicationURL
+{
+ id obj = [self objectForKey: LinkBackApplicationURLKey] ;
+ if (obj) obj = [NSURL URLWithString: obj] ;
+ return obj ;
+}
+
+@end
+
// ...........................................................................
// LinkBackServer
//
View
27 Source/LinkBack.xcode/project.pbxproj
@@ -114,6 +114,7 @@
children = (
8DC2EF5A0486A6940098B216,
089C1666FE841158C02AAC07,
+ 20E80E6307F2116B0060ED13,
);
isa = PBXGroup;
name = Resources;
@@ -258,6 +259,31 @@
settings = {
};
};
+ 20E80E6307F2116B0060ED13 = {
+ children = (
+ 20E80E6407F2116B0060ED13,
+ );
+ isa = PBXVariantGroup;
+ name = Localized.strings;
+ path = "";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ 20E80E6407F2116B0060ED13 = {
+ fileEncoding = 4;
+ isa = PBXFileReference;
+ lastKnownFileType = text.plist.strings;
+ name = English;
+ path = English.lproj/Localized.strings;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ 20E80E6507F2116B0060ED13 = {
+ fileRef = 20E80E6307F2116B0060ED13;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
//200
//201
//202
@@ -340,6 +366,7 @@
buildActionMask = 2147483647;
files = (
8DC2EF530486A6940098B216,
+ 20E80E6507F2116B0060ED13,
);
isa = PBXResourcesBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
View
7 TextEdit+LinkBack/Document.h
@@ -78,7 +78,7 @@ typedef struct _DocumentSaveInfo {
IBOutlet NSView *richTextDocumentFormatAccessory; /* Set when the rich text popup is loaded */
IBOutlet NSPopUpButton *richTextDocumentFormatPopUp; /* Set when the rich text popup is loaded */
- // LIVELINK SUPPORT
+ // LINKBACK SUPPORT
NSMutableArray* activeLinks ; // currently active live links.
}
@@ -217,6 +217,11 @@ typedef struct _DocumentSaveInfo {
// LIVELINK EDITS
@interface Document (LinkBackSupport) <LinkBackClientDelegate>
+
+- (NSArray*)selectedLinkBackTextAttachments ;
+- (IBAction)editLinkBackItems:(id)sender ;
+- (BOOL)editLinkBackInTextAttachment:(id)attachment ;
+
@end
@interface Document (ReadWrite)
View
98 TextEdit+LinkBack/Document.m
@@ -68,14 +68,56 @@ this original Apple software (the "Apple Software"), to use, reproduce, modify a
@implementation Document (LinkBackSupport)
-- (void)textView:(NSTextView *)aTextView doubleClickedOnCell:(id <NSTextAttachmentCell>)cell inRect:(NSRect)cellFrame atIndex:(unsigned)charIndex
+- (NSArray*)selectedLinkBackTextAttachments
{
- LinkBackTextAttachment* attachment = (LinkBackTextAttachment*)[cell attachment] ;
+ NSMutableArray* ret = [[NSMutableArray alloc] init] ;
+
+ // get the current selected range
+ NSTextStorage* ts = [self textStorage] ;
+ NSRange range = [[[self layoutManager] firstTextView] selectedRange] ;
+ NSRange erange ;
+ unsigned maxloc = NSMaxRange(range) ;
+
+ NSTextAttachment* attachment ;
+
+ // expand the selected range if it is 0 length to get the attachment following.
+ if ((0==range.length) && (range.location < [ts length])) range.length = 1 ;
+
+ // add any linkback text attachments to return list
+ while(range.length > 0) {
+ attachment = [ts attribute: NSAttachmentAttributeName atIndex: range.location effectiveRange: &erange] ;
+
+ if (attachment && [attachment isKindOfClass: [LinkBackTextAttachment class]]) {
+ [ret addObject: attachment] ;
+ }
+
+ // update range
+ range.location = NSMaxRange(erange) ;
+ range.length = (range.location < maxloc) ? maxloc - range.location : 0 ;
+ }
+
+ return [ret autorelease] ;
+}
+
+- (void)editLinkBackItems:(id)sender
+{
+ NSLog(@"edit linkback items") ;
+ NSArray* attachments = [self selectedLinkBackTextAttachments] ;
+ int idx = [attachments count] ;
+ while(--idx >= 0) {
+ LinkBackTextAttachment* attachment = [attachments objectAtIndex: idx];
+ [self editLinkBackInTextAttachment: attachment] ;
+ }
+}
+
+- (BOOL)editLinkBackInTextAttachment:(id)attachment
+{
+ BOOL ret = NO ;
id linkBackData ;
// get the live link data and start a live link if it is found.
if ([attachment isKindOfClass: [LinkBackTextAttachment class]] && (linkBackData=[attachment linkBackData])) {
-
+
// start the edit. If an object is returned, the edit succeeded.
NSString* srcName = [[self window] title] ;
NSString* itemKey = [attachment linkBackItemKey] ;
@@ -85,7 +127,11 @@ - (void)textView:(NSTextView *)aTextView doubleClickedOnCell:(id <NSTextAttachme
[lnk setRepresentedObject: attachment] ;
[activeLinks addObject: lnk] ;
}
- } else NSBeep() ;
+
+ ret = YES ;
+ }
+
+ return ret ;
}
- (void)linkBackDidClose:(LinkBack*)aLink
@@ -1560,11 +1606,21 @@ - (BOOL)textView:(NSTextView *)textView clickedOnLink:(id)link atIndex:(unsigned
- (void)textView:(NSTextView *)view doubleClickedOnCell:(id <NSTextAttachmentCell>)cell inRect:(NSRect)rect {
BOOL success = NO;
- NSString *name = [[[cell attachment] fileWrapper] filename];
- if (name && documentName && ![name isEqualToString:@""] && ![documentName isEqualToString:@""]) {
- NSString *fullPath = [documentName stringByAppendingPathComponent:name];
- success = [[NSWorkspace sharedWorkspace] openFile:fullPath];
- }
+
+ // first try to handle linkback attachments
+ success = [self editLinkBackInTextAttachment: [cell attachment]] ;
+
+ // next try to handle regular file attachments
+ if (!success) {
+ NSString* fullPath ;
+ NSString *name = [[[cell attachment] fileWrapper] filename];
+
+ if (name && documentName && ![name isEqualToString:@""] && ![documentName isEqualToString:@""]) {
+ fullPath = [documentName stringByAppendingPathComponent:name];
+ success = [[NSWorkspace sharedWorkspace] openFile:fullPath];
+ }
+ }
+
if (!success) {
NSBeep();
}
@@ -1765,7 +1821,29 @@ static void validateToggleItem(NSMenuItem *aCell, BOOL useFirst, NSString *first
*/
- (BOOL)validateMenuItem:(NSMenuItem *)aCell {
SEL action = [aCell action];
- if (action == @selector(toggleRich:)) {
+
+ // LINKBACK CODE
+ if (action == @selector(editLinkBackItems:)) {
+ BOOL ret ;
+ NSString* title ;
+ NSArray* attachments = [self selectedLinkBackTextAttachments] ;
+
+ // get the proper menu item name and return value
+ if ([attachments count] == 1) {
+ title = [[[attachments objectAtIndex: 0] linkBackData] linkBackEditMenuTitle] ;
+ ret = YES ;
+ } else if ([attachments count]>1) {
+ title = LinkBackEditMultipleMenuTitle() ;
+ ret = YES ;
+ } else {
+ title = LinkBackEditNoneMenuTitle() ;
+ ret = NO ;
+ }
+
+ [aCell setTitle: title] ;
+ return ret ;
+
+ } else if (action == @selector(toggleRich:)) {
validateToggleItem(aCell, [self isRichText], NSLocalizedString(@"&Make Plain Text", @"Menu item to make the current document plain text"), NSLocalizedString(@"&Make Rich Text", @"Menu item to make the current document rich text"));
if (![[self firstTextView] isEditable] || [self hasSheet]) return NO;
} else if (action == @selector(toggleReadOnly:)) {
View
1  TextEdit+LinkBack/English.lproj/Edit.nib/classes.nib
@@ -13,6 +13,7 @@
close = id;
complete = id;
doPageLayout = id;
+ editLinkBackItems = id;
outline = id;
pasteAsPlainText = id;
performFindPanelAction = id;
View
8 TextEdit+LinkBack/English.lproj/Edit.nib/info.nib
@@ -3,19 +3,19 @@
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
- <string>120 20 356 240 0 0 1440 878 </string>
+ <string>110 44 356 240 0 0 1280 1002 </string>
<key>IBEditorPositions</key>
<dict>
<key>4</key>
- <string>169 576 332 44 0 0 1440 878 </string>
+ <string>693 867 349 44 0 0 1280 1002 </string>
</dict>
<key>IBFramework Version</key>
- <string>326.0</string>
+ <string>437.0</string>
<key>IBOpenObjects</key>
<array>
<integer>4</integer>
</array>
<key>IBSystem Version</key>
- <string>7A181</string>
+ <string>8A414</string>
</dict>
</plist>
View
BIN  TextEdit+LinkBack/English.lproj/Edit.nib/keyedobjects.nib
Binary file not shown
View
3  TextEdit+LinkBack/LinkBackTextView.m
@@ -61,6 +61,5 @@ - (BOOL)readSelectionFromPasteboard:(NSPasteboard*)pboard
return YES ;
} else return [super readSelectionFromPasteboard: pboard] ;
-}
-
+}
@end
View
6 TextEdit+LinkBack/TextEdit.pbproj/project.pbxproj
@@ -259,7 +259,7 @@
20D867A0067FC607001F0052,
);
isa = PBXGroup;
- name = LiveLink;
+ name = LinkBack;
refType = 4;
sourceTree = "<group>";
};
@@ -923,6 +923,10 @@
<string>lted</string>
<key>CFBundleVersion</key>
<string>alpha.01</string>
+ <key>LinkBackApplicationURL</key>
+ <string>http://www.linkbackproject.org</string>
+ <key>LinkBackVersion</key>
+ <string>A</string>
<key>NSAppleScriptEnabled</key>
<string>YES</string>
<key>NSHumanReadableCopyright</key>
Please sign in to comment.
Something went wrong with that request. Please try again.