From dcf64eac4fdb246cf6fb169c1279b67966478173 Mon Sep 17 00:00:00 2001 From: randomguy3 Date: Wed, 18 Jan 2012 10:05:06 +0000 Subject: Rename src/linux to src/gtk (which is more accurate) git-svn-id: https://tikzit.svn.sourceforge.net/svnroot/tikzit/trunk@392 7c02a99a-9b00-45e3-bf44-6f3dd7fddb64 --- tikzit/src/gtk/Preambles+Storage.m | 84 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 tikzit/src/gtk/Preambles+Storage.m (limited to 'tikzit/src/gtk/Preambles+Storage.m') diff --git a/tikzit/src/gtk/Preambles+Storage.m b/tikzit/src/gtk/Preambles+Storage.m new file mode 100644 index 0000000..bd3ea03 --- /dev/null +++ b/tikzit/src/gtk/Preambles+Storage.m @@ -0,0 +1,84 @@ +/* + * Copyright 2011 Alex Merry + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#import "Preambles+Storage.h" + +static NSString *ext = @"preamble"; + +@implementation Preambles (Storage) + ++ (Preambles*) preamblesFromDirectory:(NSString*)directory { + return [[[self alloc] initFromDirectory:directory] autorelease]; +} + +- (id) initFromDirectory:(NSString*)directory { + BOOL isDir = NO; + if ([[NSFileManager defaultManager] fileExistsAtPath:directory isDirectory:&isDir] && isDir) { + self = [super init]; + + if (self) { + selectedPreambleName = @"default"; + preambleDict = nil; + [self loadFromDirectory:directory]; + } + } else { + self = [self init]; + } + + return self; +} + +- (void) loadFromDirectory:(NSString*)directory { + preambleDict = [[NSMutableDictionary alloc] initWithCapacity:1]; + NSDirectoryEnumerator *en = [[NSFileManager defaultManager] enumeratorAtPath:directory]; + NSString *filename; + while ((filename = [en nextObject]) != nil) { + if ([filename hasSuffix:ext] && [[en fileAttributes] fileType] == NSFileTypeRegular) { + NSString *path = [directory stringByAppendingPathComponent:filename]; + NSString *contents = [NSString stringWithContentsOfFile:path]; + if (contents) { + [preambleDict setObject:contents forKey:[filename stringByDeletingPathExtension]]; + } + } + } +} + +- (void) storeToDirectory:(NSString*)directory { + NSDirectoryEnumerator *den = [[NSFileManager defaultManager] enumeratorAtPath:directory]; + NSString *filename; + while ((filename = [den nextObject]) != nil) { + if ([filename hasSuffix:ext] && [[den fileAttributes] fileType] == NSFileTypeRegular) { + NSString *path = [directory stringByAppendingPathComponent:filename]; + NSString *entry = [filename stringByDeletingPathExtension]; + if ([preambleDict objectForKey:entry] == nil) { + [[NSFileManager defaultManager] removeFileAtPath:path handler:nil]; + } + } + } + + NSEnumerator *en = [self customPreambleNameEnumerator]; + NSString *entry; + while ((entry = [en nextObject]) != nil) { + NSString *path = [directory stringByAppendingPathComponent:[entry stringByAppendingPathExtension:ext]]; + NSString *contents = [preambleDict objectForKey:entry]; + [contents writeToFile:path atomically:YES]; + } +} + +@end + +// vim:ft=objc:ts=8:et:sts=4:sw=4 -- cgit v1.2.3