diff options
author | Alex Merry <alex.merry@cs.ox.ac.uk> | 2013-08-07 16:56:23 +0100 |
---|---|---|
committer | Alex Merry <alex.merry@cs.ox.ac.uk> | 2013-08-07 17:04:48 +0100 |
commit | ac7b53be102860d76f318ab0575cfb546635d04e (patch) | |
tree | 5e869a1390c224b9b601d55a4e267160af7ab585 /tikzit/src | |
parent | 5a94458d9ee3ee8afd978477c755200df432a9b0 (diff) |
Allow preambles to omit the tikzit-specific preview stuff
The editable preambles include a bunch of things that *have* to be there
for previews to work, which makes figuring out what you can edit hard.
We now add a \documentclass automagically if it is missing, and if
\begin{document} is missing, we assume the preview-specific stuff should
be added.
OSX changes are untested.
Diffstat (limited to 'tikzit/src')
-rw-r--r-- | tikzit/src/common/Preambles.h | 5 | ||||
-rw-r--r-- | tikzit/src/common/Preambles.m | 45 | ||||
-rw-r--r-- | tikzit/src/gtk/PreviewRenderer.m | 5 | ||||
-rw-r--r-- | tikzit/src/osx/PreambleController.h | 1 | ||||
-rw-r--r-- | tikzit/src/osx/PreambleController.m | 5 | ||||
-rw-r--r-- | tikzit/src/osx/PreviewController.m | 5 |
6 files changed, 48 insertions, 18 deletions
diff --git a/tikzit/src/common/Preambles.h b/tikzit/src/common/Preambles.h index 95081c4..2fb084a 100644 --- a/tikzit/src/common/Preambles.h +++ b/tikzit/src/common/Preambles.h @@ -25,6 +25,8 @@ #import <Foundation/Foundation.h> #import "StyleManager.h" +@class Graph; + @interface Preambles : NSObject { NSMutableDictionary *preambleDict; NSString *selectedPreambleName; @@ -63,6 +65,9 @@ - (NSString*)defaultPreambleName; - (NSString*)currentPostamble; +- (NSString*)buildDocumentForTikz:(NSString*)tikz; +- (NSString*)buildDocumentForGraph:(Graph*)g; + @end // vi:ft=objc:noet:ts=4:sts=4:sw=4 diff --git a/tikzit/src/common/Preambles.m b/tikzit/src/common/Preambles.m index d6d18e9..651bbcd 100644 --- a/tikzit/src/common/Preambles.m +++ b/tikzit/src/common/Preambles.m @@ -24,14 +24,13 @@ #import "Preambles.h" #import "NodeStyle.h" #import "EdgeStyle.h" +#import "Graph.h" -static NSString *PREAMBLE_HEAD = -@"\\documentclass{article}\n" +static NSString *DEF_PREAMBLE_START = @"\\usepackage[svgnames]{xcolor}\n" @"\\usepackage{tikz}\n" @"\\usetikzlibrary{decorations.markings}\n" @"\\usetikzlibrary{shapes.geometric}\n" -@"\\pagestyle{empty}\n" @"\n" @"\\pgfdeclarelayer{edgelayer}\n" @"\\pgfdeclarelayer{nodelayer}\n" @@ -41,6 +40,7 @@ static NSString *PREAMBLE_HEAD = static NSString *PREAMBLE_TAIL = @"\n" +@"\\pagestyle{empty}\n" @"\\usepackage[graphics,tightpage,active]{preview}\n" @"\\PreviewEnvironment{tikzpicture}\n" @"\\newlength{\\imagewidth}\n" @@ -71,6 +71,13 @@ static NSString *POSTAMBLE = return self; } +- (void)dealloc { + [selectedPreambleName release]; + [styles release]; + [styleManager release]; + [super dealloc]; +} + - (NSString*)preambleForName:(NSString*)name { if ([name isEqualToString:@"default"]) return [self defaultPreamble]; @@ -152,8 +159,8 @@ static NSString *POSTAMBLE = } - (NSString*)defaultPreamble { - return [NSString stringWithFormat:@"%@%@%@", - PREAMBLE_HEAD, [self styleDefinitions], PREAMBLE_TAIL]; + return [NSString stringWithFormat:@"%@%@", + DEF_PREAMBLE_START, [self styleDefinitions]]; } - (BOOL)selectedPreambleIsDefault { @@ -255,11 +262,29 @@ static NSString *POSTAMBLE = return YES; } -- (void)dealloc { - [selectedPreambleName release]; - [styles release]; - [styleManager release]; - [super dealloc]; +- (NSString*)buildDocumentForTikz:(NSString*)tikz +{ + NSString *preamble = [self currentPreamble]; + NSString *doc_head = @""; + if (![preamble hasPrefix:@"\\documentclass"]) { + doc_head = @"\\documentclass{article}\n"; + } + NSString *preamble_suffix = @""; + if ([preamble rangeOfString:@"\\begin{document}" + options:NSBackwardsSearch].length == 0) { + preamble_suffix = PREAMBLE_TAIL; + } + return [NSString stringWithFormat:@"%@%@%@%@%@", + doc_head, + [self currentPreamble], + preamble_suffix, + tikz, + POSTAMBLE]; +} + +- (NSString*)buildDocumentForGraph:(Graph*)g +{ + return [self buildDocumentForTikz:[g tikz]]; } @end diff --git a/tikzit/src/gtk/PreviewRenderer.m b/tikzit/src/gtk/PreviewRenderer.m index 26293b5..28113d6 100644 --- a/tikzit/src/gtk/PreviewRenderer.m +++ b/tikzit/src/gtk/PreviewRenderer.m @@ -90,10 +90,7 @@ return NO; } - NSString *tex = [NSString stringWithFormat:@"%@%@%@", - [preambles currentPreamble], - [document tikz], - [preambles currentPostamble]]; + NSString *tex = [preambles buildDocumentForTikz:[document tikz]]; NSString *tempDir = [[NSFileManager defaultManager] createTempDirectoryWithError:error]; if (!tempDir) { diff --git a/tikzit/src/osx/PreambleController.h b/tikzit/src/osx/PreambleController.h index 2d5a8ab..fca52ae 100644 --- a/tikzit/src/osx/PreambleController.h +++ b/tikzit/src/osx/PreambleController.h @@ -48,6 +48,7 @@ - (void)savePreambles:(NSString*)plist; - (NSString*)currentPreamble; - (NSString*)currentPostamble; +- (NSString*)buildDocumentForTikz:(NSString*)tikz; - (IBAction)setPreamble:(id)sender; - (IBAction)insertDefaultStyles:(id)sender; diff --git a/tikzit/src/osx/PreambleController.m b/tikzit/src/osx/PreambleController.m index e424e7b..af9a778 100644 --- a/tikzit/src/osx/PreambleController.m +++ b/tikzit/src/osx/PreambleController.m @@ -108,6 +108,11 @@ return [preambles currentPostamble]; } +- (NSString*)buildDocumentForTikz:(NSString*)tikz { + [self flushText]; + return [preambles buildDocumentForTikz:tikz]; +} + - (void)setSelectionIndexes:(NSIndexSet *)idx { [self willChangeValueForKey:@"selectionIndexes"]; selectionIndexes = idx; diff --git a/tikzit/src/osx/PreviewController.m b/tikzit/src/osx/PreviewController.m index 7c41562..94a80a4 100644 --- a/tikzit/src/osx/PreviewController.m +++ b/tikzit/src/osx/PreviewController.m @@ -52,10 +52,7 @@ static PreviewController *preview = nil; int fnum = typesetCount++; - NSString *tex = [NSString stringWithFormat:@"%@%@%@", - [preambleController currentPreamble], - tikz, - [preambleController currentPostamble]]; + NSString *tex = [preambleController buildDocumentForTikz:tikz]; NSString *texFile = [NSString stringWithFormat:@"%@/tikzit_%d.tex", tempDir, fnum]; NSString *pdfFile = [NSString stringWithFormat:@"%@/tikzit_%d.pdf", tempDir, fnum]; |