summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Paulsson <gonz@users.sourceforge.net>2013-02-26 19:18:54 +0000
committerJohan Paulsson <gonz@users.sourceforge.net>2013-02-26 19:18:54 +0000
commitce5930b13b15a98e0c365003ef56cedc1c9cb6b3 (patch)
tree039741d2907a00d7fc76d9cb0ade664201345892
parent44fc6c6fc022b7262175a71a981ddc3969132ed5 (diff)
osx gui underlines the offending line on a parser error in document message
-rw-r--r--tikzit/English.lproj/TikzDocument.xib19
-rw-r--r--tikzit/TikZiT.xcodeproj/project.pbxproj20
-rw-r--r--tikzit/src/common/TikzGraphAssembler.m16
-rw-r--r--tikzit/src/osx/TikzSourceController.m31
4 files changed, 64 insertions, 22 deletions
diff --git a/tikzit/English.lproj/TikzDocument.xib b/tikzit/English.lproj/TikzDocument.xib
index 446cb7e..53963d6 100644
--- a/tikzit/English.lproj/TikzDocument.xib
+++ b/tikzit/English.lproj/TikzDocument.xib
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
- <int key="IBDocument.SystemTarget">1070</int>
+ <int key="IBDocument.SystemTarget">1080</int>
<string key="IBDocument.SystemVersion">12C60</string>
<string key="IBDocument.InterfaceBuilderVersion">2843</string>
<string key="IBDocument.AppKitVersion">1187.34</string>
@@ -69,10 +69,10 @@
<reference key="NSNextResponder" ref="1058910169"/>
<int key="NSvFlags">265</int>
<array class="NSMutableArray" key="NSSubviews"/>
- <string key="NSFrame">{{422, 18}, {17, 19}}</string>
+ <string key="NSFrame">{{425, 21}, {17, 19}}</string>
<reference key="NSSuperview" ref="1058910169"/>
<reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="363276524"/>
+ <reference key="NSNextKeyView"/>
<bool key="NSViewIsLayerTreeHost">YES</bool>
<string key="NSReuseIdentifierKey">_NS:1574</string>
<bool key="NSEnabled">YES</bool>
@@ -111,7 +111,7 @@
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="902332144">
<int key="NSCellFlags">68157504</int>
- <int key="NSCellFlags2">272630784</int>
+ <int key="NSCellFlags2">1077941248</int>
<string key="NSContents"/>
<object class="NSFont" key="NSSupport" id="929913442">
<string key="NSName">LucidaGrande</string>
@@ -206,7 +206,7 @@
<string key="NSFrame">{{0, -14}, {445, 14}}</string>
<reference key="NSSuperview" ref="1053475928"/>
<reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="316980985"/>
+ <reference key="NSNextKeyView" ref="845088135"/>
<object class="NSTextContainer" key="NSTextContainer" id="655316054">
<object class="NSLayoutManager" key="NSLayoutManager">
<object class="NSTextStorage" key="NSTextStorage">
@@ -343,7 +343,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
<string key="NSFrameSize">{447, 0}</string>
<reference key="NSSuperview" ref="363276524"/>
<reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="1053475928"/>
+ <reference key="NSNextKeyView" ref="316980985"/>
<int key="NSsFlags">133202</int>
<reference key="NSVScroller" ref="334949682"/>
<reference key="NSHScroller" ref="316980985"/>
@@ -371,6 +371,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
<string key="NSFrame">{{305, -184}, {128, 14}}</string>
<reference key="NSSuperview" ref="568628114"/>
<reference key="NSWindow"/>
+ <reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="884817082">
<int key="NSCellFlags">68157504</int>
@@ -395,7 +396,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="129838346"/>
</object>
- <string key="NSScreenRect">{{0, 0}, {1600, 1178}}</string>
+ <string key="NSScreenRect">{{0, 0}, {1600, 1200}}</string>
<string key="NSMinSize">{94, 108}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
@@ -849,10 +850,6 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <real value="1070" key="NS.object.0"/>
- </object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
<real value="3200" key="NS.object.0"/>
diff --git a/tikzit/TikZiT.xcodeproj/project.pbxproj b/tikzit/TikZiT.xcodeproj/project.pbxproj
index 3780cc6..bf8e930 100644
--- a/tikzit/TikZiT.xcodeproj/project.pbxproj
+++ b/tikzit/TikZiT.xcodeproj/project.pbxproj
@@ -130,6 +130,7 @@
7F6E2C8A16B0096000BFE20D /* SupportDir.m in Sources */ = {isa = PBXBuildFile; fileRef = 55652DF813E1F2030023F4C6 /* SupportDir.m */; };
7F6E2C8C16B00ABA00BFE20D /* SFBInspectors.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 55CA98D412EF8FCE008F0368 /* SFBInspectors.framework */; };
7F781C1A16B5DE1400239826 /* ParseErrorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F781C1916B5DE1400239826 /* ParseErrorView.m */; };
+ 7F90E88616DD29600069EBCD /* NSString+Tikz.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F90E88516DD29600069EBCD /* NSString+Tikz.m */; };
7FB9BFEE16B57C2E00773146 /* TikzFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FB9BFED16B57C2E00773146 /* TikzFormatter.m */; };
7FEED45716B1A7C500B056CB /* StyleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FEED45616B1A7C500B056CB /* StyleManager.m */; };
8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */; };
@@ -343,6 +344,8 @@
7F6E2C8716B0091300BFE20D /* maths.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = maths.m; path = src/common/test/maths.m; sourceTree = "<group>"; };
7F781C1816B5DE1400239826 /* ParseErrorView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ParseErrorView.h; path = src/osx/ParseErrorView.h; sourceTree = "<group>"; };
7F781C1916B5DE1400239826 /* ParseErrorView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ParseErrorView.m; path = src/osx/ParseErrorView.m; sourceTree = "<group>"; };
+ 7F90E88416DD29600069EBCD /* NSString+Tikz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSString+Tikz.h"; path = "src/common/NSString+Tikz.h"; sourceTree = "<group>"; };
+ 7F90E88516DD29600069EBCD /* NSString+Tikz.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSString+Tikz.m"; path = "src/common/NSString+Tikz.m"; sourceTree = "<group>"; };
7FB9BFEC16B57C2E00773146 /* TikzFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TikzFormatter.h; path = src/osx/TikzFormatter.h; sourceTree = "<group>"; };
7FB9BFED16B57C2E00773146 /* TikzFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TikzFormatter.m; path = src/osx/TikzFormatter.m; sourceTree = "<group>"; };
7FEED45516B1A7C400B056CB /* StyleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleManager.h; path = src/common/StyleManager.h; sourceTree = "<group>"; };
@@ -607,6 +610,8 @@
558F18C0117B031C009863B2 /* GraphElementData.m */,
558F18C1117B031C009863B2 /* Node.h */,
558F18C2117B031C009863B2 /* Node.m */,
+ 7F90E88416DD29600069EBCD /* NSString+Tikz.h */,
+ 7F90E88516DD29600069EBCD /* NSString+Tikz.m */,
558F18C3117B031C009863B2 /* NodeStyle.h */,
558F18C4117B031C009863B2 /* NodeStyle.m */,
5585E5C0117F681800124513 /* NodeStyle+Coder.h */,
@@ -901,6 +906,7 @@
7FEED45716B1A7C500B056CB /* StyleManager.m in Sources */,
7FB9BFEE16B57C2E00773146 /* TikzFormatter.m in Sources */,
7F781C1A16B5DE1400239826 /* ParseErrorView.m in Sources */,
+ 7F90E88616DD29600069EBCD /* NSString+Tikz.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1004,7 +1010,7 @@
AppKit,
);
PRODUCT_NAME = tests;
- SDKROOT = macosx10.7;
+ SDKROOT = macosx;
};
name = Debug;
};
@@ -1029,7 +1035,7 @@
AppKit,
);
PRODUCT_NAME = tests;
- SDKROOT = macosx10.7;
+ SDKROOT = macosx;
ZERO_LINK = NO;
};
name = Release;
@@ -1038,6 +1044,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@@ -1054,7 +1061,7 @@
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.7;
PRODUCT_NAME = TikZiT;
- SDKROOT = macosx10.7;
+ SDKROOT = macosx;
};
name = Debug;
};
@@ -1062,6 +1069,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@@ -1076,7 +1084,7 @@
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.7;
PRODUCT_NAME = TikZiT;
- SDKROOT = macosx10.7;
+ SDKROOT = macosx;
};
name = Release;
};
@@ -1093,7 +1101,7 @@
MACOSX_DEPLOYMENT_TARGET = 10.5;
ONLY_ACTIVE_ARCH = YES;
PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
- SDKROOT = macosx10.5;
+ SDKROOT = macosx;
SYMROOT = xbuild;
USER_HEADER_SEARCH_PATHS = "src/osx src/common";
VALID_ARCHS = "i386 x86_64";
@@ -1112,7 +1120,7 @@
MACOSX_DEPLOYMENT_TARGET = 10.5;
ONLY_ACTIVE_ARCH = NO;
PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
- SDKROOT = macosx10.5;
+ SDKROOT = macosx;
SYMROOT = xbuild;
USER_HEADER_SEARCH_PATHS = "src/osx src/common";
VALID_ARCHS = "i386 x86_64";
diff --git a/tikzit/src/common/TikzGraphAssembler.m b/tikzit/src/common/TikzGraphAssembler.m
index b07ee58..1dc997a 100644
--- a/tikzit/src/common/TikzGraphAssembler.m
+++ b/tikzit/src/common/TikzGraphAssembler.m
@@ -46,8 +46,20 @@ void yyerror(const char *str) {
NSLog(@"Parse error on line %i: %s\n%s\n%@\n", lineno, str, linebuff, [[@"" stringByPaddingToLength:(tokenpos-yyleng) withString: @" " startingAtIndex:0] stringByAppendingString:[@"" stringByPaddingToLength:yyleng withString: @"^" startingAtIndex:0]]);
if (currentAssembler != nil) {
NSError *error = [NSError errorWithDomain:@"net.sourceforge.tikzit"
- code:TZ_ERR_PARSE
- userInfo:[NSDictionary dictionaryWithObject:[NSString stringWithCString:str] forKey: NSLocalizedDescriptionKey]];
+ code:TZ_ERR_PARSE
+ userInfo:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:[NSString stringWithCString:str encoding:NSUTF8StringEncoding],
+ [NSNumber numberWithInt:lineno],
+ [NSString stringWithCString:linebuff encoding:NSUTF8StringEncoding],
+ [NSNumber numberWithInt:tokenpos],
+ [NSNumber numberWithInt:yyleng],
+ nil]
+ forKeys: [NSArray arrayWithObjects:NSLocalizedDescriptionKey,
+ @"lineNumber",
+ @"syntaxString",
+ @"tokenStart",
+ @"tokenLength",
+ nil]]];
+
[currentAssembler invalidateWithError:error];
}
}
diff --git a/tikzit/src/osx/TikzSourceController.m b/tikzit/src/osx/TikzSourceController.m
index 428c6ba..6daff0f 100644
--- a/tikzit/src/osx/TikzSourceController.m
+++ b/tikzit/src/osx/TikzSourceController.m
@@ -180,12 +180,37 @@
[status setStringValue:@"parse error"];
[status setTextColor:failedColor];
+ NSDictionary *d = [[assembler lastError] userInfo];
- NSLog(@"Parse error: %@",[assembler lastError]);
+ NSString *ts = [NSString stringWithFormat: @"Parse error on line %@: %@\n", [d valueForKey:@"lineNumber"], [d valueForKey:NSLocalizedDescriptionKey]];
+ NSMutableAttributedString *as = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat: @"Parse error on line %@: %@\n%@\n", [d valueForKey:@"lineNumber"], [d valueForKey:NSLocalizedDescriptionKey], [[d valueForKey:@"syntaxString"] stringByReplacingOccurrencesOfString:@"\t" withString:@""]]];
- NSError *e = [assembler lastError];
+ NSInteger tokenLength = [[d valueForKey:@"tokenLength"] integerValue];
+ // Bit of a mess, offset around to find correct position and correct for 4 characters for every one character of \t
+ NSInteger addedTokenStart = [[d valueForKey:@"tokenStart"] integerValue] + [ts length] - ([[[d valueForKey:@"syntaxString"] componentsSeparatedByString:@"\t"] count]-1)*4 - tokenLength;
- [errorMessage setStringValue:[[[assembler lastError] userInfo] valueForKey:NSLocalizedDescriptionKey]];
+ // Can't see if the error is a start paranthesis as only that will be underlined, underline the entire paranthesis instead
+ if(tokenLength == 1 && [[as string] characterAtIndex:addedTokenStart] == '('){
+ tokenLength += [[[as string] substringFromIndex:addedTokenStart+1] rangeOfString:@")"].location + 1;
+ }
+
+ // Same if unexpected endparanthesis
+ if(tokenLength == 1 && [[as string] characterAtIndex:addedTokenStart] == ')'){
+ NSInteger d = addedTokenStart - [[[as string] substringToIndex:addedTokenStart] rangeOfString:@"(" options:NSBackwardsSearch].location;
+
+ tokenLength += d;
+ addedTokenStart -= d;
+ }
+
+ [as beginEditing];
+ [as addAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:NSUnderlineStyleSingle | NSUnderlinePatternDot], NSUnderlineStyleAttributeName,
+ [NSColor redColor], NSUnderlineColorAttributeName,
+ nil]
+ range:NSMakeRange(addedTokenStart, tokenLength)];
+ [as endEditing];
+
+ [errorMessage setAttributedStringValue:as];
[errorNotification setHidden:FALSE];
}
}