summaryrefslogtreecommitdiff
path: root/tikzit
diff options
context:
space:
mode:
authorAlex Merry <alex.merry@cs.ox.ac.uk>2013-08-07 16:56:23 +0100
committerAlex Merry <alex.merry@cs.ox.ac.uk>2013-08-07 17:04:48 +0100
commitac7b53be102860d76f318ab0575cfb546635d04e (patch)
tree5e869a1390c224b9b601d55a4e267160af7ab585 /tikzit
parent5a94458d9ee3ee8afd978477c755200df432a9b0 (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')
-rw-r--r--tikzit/src/common/Preambles.h5
-rw-r--r--tikzit/src/common/Preambles.m45
-rw-r--r--tikzit/src/gtk/PreviewRenderer.m5
-rw-r--r--tikzit/src/osx/PreambleController.h1
-rw-r--r--tikzit/src/osx/PreambleController.m5
-rw-r--r--tikzit/src/osx/PreviewController.m5
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];