summaryrefslogtreecommitdiff
path: root/src/common/Preambles.m
diff options
context:
space:
mode:
authorrandomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64>2012-01-06 18:50:09 +0000
committerrandomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64>2012-01-06 18:50:09 +0000
commit6458381a1115a4088d6a3a794f3e2ec40ea07987 (patch)
tree734b8715308bfd871d1717ac338c436c5de33ac9 /src/common/Preambles.m
parent042a081c40bdd8ab0e5a1cd3d2a7a81182660253 (diff)
GTK: allow preambles to be added, removed and renamed
git-svn-id: https://tikzit.svn.sourceforge.net/svnroot/tikzit/trunk@355 7c02a99a-9b00-45e3-bf44-6f3dd7fddb64
Diffstat (limited to 'src/common/Preambles.m')
-rw-r--r--src/common/Preambles.m33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/common/Preambles.m b/src/common/Preambles.m
index 68f41a3..4f74dd0 100644
--- a/src/common/Preambles.m
+++ b/src/common/Preambles.m
@@ -173,6 +173,26 @@ static NSString *POSTAMBLE =
return @"default";
}
+- (NSString*)addPreamble {
+ return [self addPreambleWithNameBase:@"new preamble"];
+}
+
+- (NSString*)addPreambleWithNameBase:(NSString*)base {
+ if ([preambleDict objectForKey:base] == nil) {
+ [self setPreamble:[self defaultPreamble] forName:base];
+ return base;
+ }
+ int i = 0;
+ NSString *tryName = nil;
+ do {
+ ++i;
+ tryName = [NSString stringWithFormat:@"%@ %d", base, i];
+ } while ([preambleDict objectForKey:tryName] != nil);
+
+ [self setPreamble:[self defaultPreamble] forName:tryName];
+ return tryName;
+}
+
- (BOOL)renamePreambleFrom:(NSString*)old to:(NSString*)new {
if ([old isEqualToString:@"default"])
return NO;
@@ -180,18 +200,31 @@ static NSString *POSTAMBLE =
return NO;
if ([old isEqualToString:new])
return YES;
+ BOOL isSelected = NO;
+ if ([old isEqualToString:selectedPreambleName]) {
+ [self setSelectedPreambleName:nil];
+ isSelected = YES;
+ }
NSString *preamble = [preambleDict objectForKey:old];
[preamble retain];
[preambleDict removeObjectForKey:old];
[preambleDict setObject:preamble forKey:new];
[preamble release];
+ if (isSelected) {
+ [self setSelectedPreambleName:new];
+ }
return YES;
}
- (BOOL)removePreamble:(NSString*)name {
if ([name isEqualToString:@"default"])
return NO;
+ // "name" may be held only by being the selected preamble...
+ [name retain];
+ if ([name isEqualToString:selectedPreambleName])
+ [self setSelectedPreambleName:nil];
[preambleDict removeObjectForKey:name];
+ [name release];
return YES;
}