// $Id$
#import "MyDocument.h"
-#import "Workset.h"
-#import <Foundation/NSDebug.h>
@implementation MyDocument
++ (void)initialize {
+ [MyDocument setKeys:[NSArray arrayWithObject:@"xmlDirty"] triggerChangeNotificationsForDependentKey:@"canSaveXmlNow"];
+ [MyDocument setKeys:[NSArray arrayWithObject:@"xsltDirty"] triggerChangeNotificationsForDependentKey:@"canSaveXsltNow"];
+ [MyDocument setKeys:[NSArray arrayWithObject:@"resultDirty"] triggerChangeNotificationsForDependentKey:@"canSaveResultNow"];
+}
+
+
- (id)init {
-// NSZombieEnabled = YES;
-
if (self = [super init]) {
workset = [[Workset alloc] init];
processor = [XSLTProcessorFactory makeProcessorOfType:PROCESSORTYPE_SABLOTRON];
wellFormedParser = [[XMLParserLibxml alloc] init];
- xmlDirty = NO;
- xsltDirty = NO;
+ [self setValue:[NSNumber numberWithBool:NO] forKey:@"xmlDirty"];
+ [self setValue:[NSNumber numberWithBool:NO] forKey:@"xsltDirty"];
+ [self setValue:[NSNumber numberWithBool:NO] forKey:@"resultDirty"];
+ [self setValue:@"" forKey:@"messageLog"];
}
defaults = [NSUserDefaults standardUserDefaults];
-
+
+ [self setValue:[NSNumber numberWithInt:2] forKey:@"processorType"];
+
return self;
}
- (void)dealloc {
- [uiUpdateTimer invalidate];
- [uiUpdateTimer release];
+// NSLog(@"doc dealloc");
+
[workset release];
[processor release];
[wellFormedParser release];
[findPanelController release];
[jumpToLinePanelController release];
[unsavedChangesPanelController release];
+ [messageLog release];
+ [super dealloc];
+
+}
+
+
+
+
+- (void)windowWillClose:(NSNotification *)aNotification {
+
+ [uiUpdateTimer invalidate];
+ [uiUpdateTimer release];
+ uiUpdateTimer = nil;
+
+// NSLog(@"windowwillclose");
}
- (void)uiUpdateTimerTarget:(NSTimer *)timer {
- [self doUpdateUI];
+// NSLog(@"timer target");
+
[timer release];
uiUpdateTimer = nil;
+ [self doUpdateUI];
+
}
+
- (void)doUpdateUI {
+// NSLog(@"keypath test: %@", [self valueForKeyPath:@"xmlView.hasError"]);
+
NSString *activeTabIdentifier = [[tabView selectedTabViewItem] identifier];
NSString *activeResultTabIdentifier = [[resultTabView selectedTabViewItem] identifier];
// NSLog(@"xml: %d, xslt: %d, param: %d, result: %d, reshtml: %d, resxslfo: %d, restext: %d", xmlTabIsVisible, xsltTabIsVisible, paramTabIsVisible, resultTabIsVisible, resultTabHtmlIsVisible, resultTabXslfoIsVisible, resultTabTextIsVisible);
if (xmlTabIsVisible) {
- [saveXmlFilenameField setObjectValue:[workset xmlFilename]];
- [saveXmlFilenameField setToolTip:[workset xmlFilename]];
- [saveXmlButton setEnabled:[self canSaveXmlNow]];
- [saveXmlAsButton setEnabled:[self canSaveXmlAsNow]];
- [xmlTagStackField setStringValue:[xmlView calculateTagStack]];
+ [xmlView calculateTagStack];
if ([defaults boolForKey:@"enableWellformedCheck"]) {
[xmlView checkWellFormed];
- if ([workset hasXmlCode] && [xmlView hasError]) {
- [xmlWellFormedIcon setImage:warningIcon];
- [xmlWellFormedIcon setToolTip:[xmlView valueForKey:@"errorString"]];
- [self setValue:[xmlView valueForKey:@"errorString"] forKey:@"drawerMessage"];
+ if ([workset hasXmlCode] && [xmlView valueForKey:@"hasError"]) {
+// [self setValue:[xmlView valueForKey:@"errorString"] forKey:@"drawerMessage"];
+ [self logMessage:[xmlView valueForKey:@"errorString"]];
} else {
- [xmlWellFormedIcon setImage:nil];
- [xmlWellFormedIcon setToolTip:nil];
- [self setValue:nil forKey:@"drawerMessage"];
+ [self clearMessageLog];
+// [self setValue:nil forKey:@"drawerMessage"];
}
}
} else if (xsltTabIsVisible) {
- [saveXsltFilenameField setObjectValue:[workset xsltFilename]];
- [saveXsltFilenameField setToolTip:[workset xsltFilename]];
- [saveXsltButton setEnabled:[self canSaveXsltNow]];
- [saveXsltAsButton setEnabled:[self canSaveXsltAsNow]];
- [xsltTagStackField setStringValue:[xsltView calculateTagStack]];
+ [xsltView calculateTagStack];
if ([defaults boolForKey:@"enableWellformedCheck"]) {
[xsltView checkWellFormed];
- if ([workset hasXsltCode] && [xsltView hasError]) {
- [xsltWellFormedIcon setImage:warningIcon];
- [xsltWellFormedIcon setToolTip:[xsltView valueForKey:@"errorString"]];
- [self setValue:[xsltView valueForKey:@"errorString"] forKey:@"drawerMessage"];
+ if ([workset hasXsltCode] && [xsltView valueForKey:@"hasError"]) {
+// [self setValue:[xsltView valueForKey:@"errorString"] forKey:@"drawerMessage"];
} else {
- [xsltWellFormedIcon setImage:nil];
- [xsltWellFormedIcon setToolTip:nil];
- [self setValue:nil forKey:@"drawerMessage"];
+// [self setValue:nil forKey:@"drawerMessage"];
}
}
[paramRemoveButton setEnabled:[parameterTable selectedRow] != -1];
[parameterTable reloadData];
} else if (resultTabIsVisible) {
- [saveResultAsButton setEnabled:[self canSaveResultAsNow]];
- [saveResultButton setEnabled:[self canSaveResultNow]];
- [autoSaveCheckbox setEnabled:[workset hasResultFilename]];
- [openResultURLButton setEnabled:[workset hasResultFilename]];
[autoShowCheckbox setEnabled:[openResultURLButton isEnabled]];
- [saveResultFilenameField setObjectValue:[workset resultFilename]];
- [saveResultFilenameField setToolTip:[workset resultFilename]];
if (resultTabHtmlIsVisible) {
[self resizeWebView];
[self updateResultWebView];
} else if (resultTabXslfoIsVisible) {
- [self updateResultImageView];
+ [self updateResultPDFView];
[pdfCurrentPageField setIntValue: (pdfPageCount ? (pdfCurrentPage + 1) : 0)];
[pdfPageCountField setIntValue:pdfPageCount];
- [pdfPreviousPageButton setEnabled:pdfCurrentPage > 0];
- [pdfNextPageButton setEnabled:pdfCurrentPage < (pdfPageCount - 1)];
+// [pdfPreviousPageButton setEnabled:pdfCurrentPage > 0];
+// [pdfNextPageButton setEnabled:pdfCurrentPage < (pdfPageCount - 1)];
[pdfSaveAsButton setEnabled:(pdfPageCount > 0)];
// } else if (resultTabTextIsVisible) {
// move this to xmlview.
// [self updateWellFormedIcons];
-
-
- [resultView setString:[workset stringResult]];
-
}
- (void)updateResultWebView {
if (!webViewUpToDate) {
WebFrame *mainFrame = [resultWebView mainFrame];
-// [mainFrame loadHTMLString:[workset stringResult] baseURL:nil];
[mainFrame loadHTMLString:[workset stringResult] baseURL:[NSURL URLWithString:[webViewBaseURL stringValue]]];
-// [mainFrame loadHTMLString:[workset stringResult] baseURL:[NSURL URLWithString:@"file:///Users/liyanage/Sites/primavera/images/x"]];
webViewUpToDate = YES;
}
}
-- (void)updateResultImageView {
- if (!imageViewUpToDate) {
+- (void)updateResultPDFView {
+ if (!PDFViewUpToDate) { // todo rename method name and instance variable
[self renderFo:self];
- imageViewUpToDate = YES;
+ PDFViewUpToDate = YES;
}
}
- (BOOL)canProcessNow {
-
return [workset hasXmlCode] && [workset hasXsltCode];
-
}
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
case 18: // Save Current Pane As...
if (xmlTabIsVisible) {
- return [self canSaveXmlAsNow];
+ return [workset hasXmlCode];
} else if (xsltTabIsVisible) {
- return [self canSaveXsltAsNow];
+ return [workset hasXsltCode];
} else if (resultTabIsVisible) {
- return [self canSaveResultAsNow];
+ return [workset hasResult];
}
break;
- (void)updateCompleteUI {
- [xmlView setString:[workset xmlCode]];
- [xsltView setString:[workset xsltCode]];
+ [xmlView setString:[workset valueForKey:@"xmlCode"]];
+ [xsltView setString:[workset valueForKey:@"xsltCode"]];
[self doUpdateUI];
}
id sender = [aNotification object];
if ([sender isEqual:xmlView]) {
- [workset setXmlCode:[xmlView string]];
- xmlDirty = YES;
+ [workset setValue:[xmlView string] forKey:@"xmlCode"];
+ [self setValue:[NSNumber numberWithBool:YES] forKey:@"xmlDirty"];
} else if ([sender isEqual:xsltView]) {
- [workset setXsltCode:[xsltView string]];
- xsltDirty = YES;
+ [workset setValue:[xsltView string] forKey:@"xsltCode"];
+ [self setValue:[NSNumber numberWithBool:YES] forKey:@"xsltDirty"];
}
[self updateChangeCount:NSChangeDone];
-
- (IBAction)process:(id)sender {
-
- const char **params = [[workset parameterSet] cArray];
-
+ const char **params = [[workset valueForKey:@"parameterSet"] cArray];
+
struct timeval tstart, tend;
gettimeofday(&tstart, NULL);
-
+
long processingTime;
if ([workset hasXsltFilename]) {
- [processor setBaseUri:[NSString stringWithFormat:@"file://%@", [workset xsltFilename]]];
+ [processor setBaseUri:[NSString stringWithFormat:@"file://%@", [workset valueForKey:@"xsltFilename"]]];
}
- if (![processor processStrings:[XMLUtils getDataWithEncodingFromString:[workset xmlCode]] withXslt:[XMLUtils getDataWithEncodingFromString:[workset xsltCode]] andParameters:params]) {
+ if (![processor processStrings:[XMLUtils getDataWithEncodingFromString:[workset valueForKey:@"xmlCode"]] withXslt:[XMLUtils getDataWithEncodingFromString:[workset valueForKey:@"xsltCode"]] andParameters:params]) {
[self setValue:[NSString stringWithFormat:@"Error on line %d of your %@ code:\n%@", [processor errorLine], ([processor errorSource] == XSLT_ERROR_SOURCE_XML ? @"XML" : @"XSLT"), [processor errorMessage]] forKey:@"drawerMessage"];
processingTime = ((tend.tv_sec * 1000000 + tend.tv_usec) - (tstart.tv_sec * 1000000 + tstart.tv_usec)) / 1000;
- [workset setResult:[processor result]];
+ [workset setValue:[processor result] forKey:@"result"];
[workset setResultEncoding:[processor resultEncoding]];
- resultDirty = YES;
+ [self setValue:[NSNumber numberWithBool:YES] forKey:@"resultDirty"];
[self autoSave];
// [errorDrawer close];
[self selectTabById:RESULT];
}
webViewUpToDate = NO;
- imageViewUpToDate = NO;
+ PDFViewUpToDate = NO;
[self updateUI];
}
}
+
+
- (IBAction)loadXml:(id)sender {
NSOpenPanel *panel = [NSOpenPanel openPanel];
// NSLog(@"choosen: %@", [[panel filenames] objectAtIndex:0]);
- [workset setXmlCode:[XMLUtils getStringWithEncodingFromFile:[[panel filenames] objectAtIndex:0]]];
- [workset setXmlFilename:[[panel filenames] objectAtIndex:0]];
+ [workset setValue:[XMLUtils getStringWithEncodingFromFile:[[panel filenames] objectAtIndex:0]] forKey:@"xmlCode"];
+ [workset setValue:[[panel filenames] objectAtIndex:0] forKey:@"xmlFilename"];
[self updateChangeCount:NSChangeDone];
[self updateCompleteUI];
}
-
-
- (IBAction)loadXslt:(id)sender {
NSOpenPanel *panel = [NSOpenPanel openPanel];
// NSLog(@"choosen: %@", [[panel filenames] objectAtIndex:0]);
- [workset setXsltCode:[XMLUtils getStringWithEncodingFromFile:[[panel filenames] objectAtIndex:0]]];
- [workset setXsltFilename:[[panel filenames] objectAtIndex:0]];
+ [workset setValue:[XMLUtils getStringWithEncodingFromFile:[[panel filenames] objectAtIndex:0]] forKey:@"xsltCode"];
+ [workset setValue:[[panel filenames] objectAtIndex:0] forKey:@"xsltFilename"];
[self updateChangeCount:NSChangeDone];
[self updateCompleteUI];
-- (BOOL)canSaveXmlAsNow {
- return [workset hasXmlCode];
-}
-
- (BOOL)canSaveXmlNow {
return [workset hasXmlFilename] && xmlDirty;
}
-- (BOOL)canSaveXsltAsNow {
- return [workset hasXsltCode];
-}
-
- (BOOL)canSaveXsltNow {
return [workset hasXsltFilename] && xsltDirty;
}
-- (BOOL)canSaveResultAsNow {
- return [workset hasResult];
-}
-
- (BOOL)canSaveResultNow {
return [workset hasResultFilename] && resultDirty;
}
if ([panel runModal] == NSFileHandlingPanelOKButton) {
- [workset setXmlFilename:[panel filename]];
+ [workset setValue:[panel filename] forKey:@"xmlFilename"];
[self saveXml:nil];
}
if ([workset hasXmlFilename]) {
[workset saveXml];
- xmlDirty = NO;
+ [self setValue:[NSNumber numberWithBool:NO] forKey:@"xmlDirty"];
}
[self updateUI];
if ([panel runModal] == NSFileHandlingPanelOKButton) {
- [workset setXsltFilename:[panel filename]];
+ [workset setValue:[panel filename] forKey:@"xsltFilename"];
[self saveXslt:nil];
}
if ([workset hasXsltFilename]) {
[workset saveXslt];
- xsltDirty = NO;
+ [self setValue:[NSNumber numberWithBool:NO] forKey:@"xsltDirty"];
}
[self updateUI];
if ([panel runModal] == NSFileHandlingPanelOKButton) {
- [workset setResultFilename:[panel filename]];
+ [workset setValue:[panel filename] forKey:@"resultFilename"];
[self saveResult:nil];
- (IBAction)saveResult:(id)sender {
- if ([workset hasResultFilename]) {
-
- [[workset result] writeToFile:[workset resultFilename] atomically:NO];
- resultDirty = NO;
-
- }
-
+ [workset saveResult];
+ [self setValue:[NSNumber numberWithBool:NO] forKey:@"resultDirty"];
[self updateUI];
[self autoShow];
if ([workset hasResultFilename]) {
- [[NSWorkspace sharedWorkspace] openURL:[NSURL fileURLWithPath:[workset resultFilename]]];
+ [[NSWorkspace sharedWorkspace] openURL:[NSURL fileURLWithPath:[workset valueForKey:@"resultFilename"]]];
}
}
- (IBAction)newParameter:(id)sender {
- [[workset parameterSet] addParameter:@"name" withValue:@"value"];
+ [[workset valueForKey:@"parameterSet"] addParameter:@"name" withValue:@"value"];
[self doUpdateUI];
}
int row = [parameterTable selectedRow];
if (row != -1) {
- [[workset parameterSet] removeParameterAtIndex:row];
+ [[workset valueForKey:@"parameterSet"] removeParameterAtIndex:row];
[self doUpdateUI];
} else {
NSBeep();
}
- (int)numberOfRowsInTableView:(NSTableView *)aTableView {
- return [[workset parameterSet] count];
+ return [(ParameterSet *)[workset valueForKey:@"parameterSet"] count];
}
- (id)tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(int)rowIndex {
- return [[workset parameterSet] getField:[aTableColumn identifier] atIndex:rowIndex];
+ return [[workset valueForKey:@"parameterSet"] getField:[aTableColumn identifier] atIndex:rowIndex];
}
forTableColumn:(NSTableColumn *)aTableColumn
row:(int)rowIndex {
- [[workset parameterSet] setField:[aTableColumn identifier] atIndex:rowIndex toString:anObject];
+ [[workset valueForKey:@"parameterSet"] setField:[aTableColumn identifier] atIndex:rowIndex toString:anObject];
}
-
+/*
- (IBAction)setProcessorType:(id)sender {
int newType = [sender tag];
[self switchProcessorToType:newType updateUI:NO];
}
+*/
+- (IBAction)switchProcessor:(id)sender {
+// sender -> selected item?
+// [self setValue:[NSNumber numberWithInt:[[sender selectedItem] tag]] forKey:@"processorType"];
+ [self switchProcessorToType:[[sender selectedItem] tag] updateUI:YES];
+
+}
- (IBAction)switchProcessorToType:(int)newType updateUI:(BOOL)updateUI {
NSLog(@"Unable to create new processor of type '%d'", newType);
}
- [processor release];
- processor = newProcessor;
-
+ [self setValue:newProcessor forKey:@"processor"];
+ [self setValue:[NSNumber numberWithInt:newType] forKey:@"processorType"];
+
if (updateUI) {
[processorTypePopUp selectItemAtIndex:[processorTypePopUp indexOfItemWithTag:newType]];
}
-
}
if (file != nil) {
- [workset setResultFilename:file];
+ [workset setValue:file forKey:@"resultFilename"];
[self saveResult:nil];
}
NSString *paramName = [args objectForKey:@"Name"];
NSString *paramValue = [args objectForKey:@"Value"];
- [[workset parameterSet] removeParameterByName:paramName];
+ [[workset valueForKey:@"parameterSet"] removeParameterByName:paramName];
- [[workset parameterSet] addParameter:paramName withValue:paramValue];
+ [[workset valueForKey:@"parameterSet"] addParameter:paramName withValue:paramValue];
[self doUpdateUI];
return nil;
NSDictionary *args = [command evaluatedArguments];
NSString *paramName = [args objectForKey:@"Name"];
- [[workset parameterSet] removeParameterByName:paramName];
+ [[workset valueForKey:@"parameterSet"] removeParameterByName:paramName];
return nil;
}
- (id)handleSetProcessorTypeScriptCommand:(NSScriptCommand *)command {
NSDictionary *args = [command evaluatedArguments];
- NSString *processorType = [args objectForKey:@"Name"];
+ NSString *processorTypeString = [args objectForKey:@"Name"];
- if ([processorType caseInsensitiveCompare:@"libxslt"] == NSOrderedSame) {
+ if ([processorTypeString caseInsensitiveCompare:@"libxslt"] == NSOrderedSame) {
[self switchProcessorToType:PROCESSORTYPE_LIBXSLT updateUI:YES];
- } else if ([processorType caseInsensitiveCompare:@"sablotron"] == NSOrderedSame) {
+ } else if ([processorTypeString caseInsensitiveCompare:@"sablotron"] == NSOrderedSame) {
[self switchProcessorToType:PROCESSORTYPE_SABLOTRON updateUI:YES];
- } else if ([processorType caseInsensitiveCompare:@"saxon"] == NSOrderedSame) {
+ } else if ([processorTypeString caseInsensitiveCompare:@"saxon"] == NSOrderedSame) {
[self switchProcessorToType:PROCESSORTYPE_SAXON updateUI:YES];
- } else if ([processorType caseInsensitiveCompare:@"xalan-j"] == NSOrderedSame) {
+ } else if ([processorTypeString caseInsensitiveCompare:@"xalan-j"] == NSOrderedSame) {
[self switchProcessorToType:PROCESSORTYPE_XALAN_J updateUI:YES];
if ([sender isEqual: xmlView]) {
[self setXmlcode:fileContents];
- [workset setXmlFilename:filename];
+ [workset setValue:filename forKey:@"xmlFilename"];
} else if ([sender isEqual:xsltView]) {
[self setXsltcode:fileContents];
- [workset setXsltFilename:filename];
+ [workset setValue:filename forKey:@"xsltFilename"];
} else {
}
+- (void)logMessage:(NSString *)string {
+ [self setValue:[NSString stringWithFormat:@"%@\n---\n%@", string, messageLog] forKey:@"messageLog"];
+}
+
+- (void)clearMessageLog {
+ [self setValue:@"" forKey:@"messageLog"];
+}
+
- (NSString *)xmlcode {
- return [workset xmlCode];
+ return [workset valueForKey:@"xmlCode"];
}
- (void)setXmlcode:(NSString *)s {
selector:@selector(setXmlcode:)
object:currentContents];
- [workset setXmlCode:s];
+ [workset setValue:s forKey:@"xmlCode"];
[self updateCompleteUI];
}
- (NSString *)xsltcode {
- return [workset xsltCode];
+ return [workset valueForKey:@"xsltCode"];
}
- (void)setXsltcode:(NSString *)s {
selector:@selector(setXsltcode:)
object:currentContents];
- [workset setXsltCode:s];
+ [workset setValue:s forKey:@"xsltCode"];
[self updateCompleteUI];
}
}
if ([workset xmlModifiedExternally] && !(xmlDirty && keep)) {
- [workset reloadXmlFromFile];
- [self updateChangeCount:NSChangeDone];
- [self updateCompleteUI];
- xmlDirty = NO;
+ [workset reloadXmlFromFile];
+ [self updateChangeCount:NSChangeDone];
+ [self updateCompleteUI];
+ [self setValue:[NSNumber numberWithBool:NO] forKey:@"xmlDirty"];
}
if ([workset xsltModifiedExternally] && !(xsltDirty && keep)) {
- [workset reloadXsltFromFile];
- [self updateChangeCount:NSChangeDone];
- [self updateCompleteUI];
- xsltDirty = NO;
+ [workset reloadXsltFromFile];
+ [self updateChangeCount:NSChangeDone];
+ [self updateCompleteUI];
+ [self setValue:[NSNumber numberWithBool:NO] forKey:@"xsltDirty"];
}
[self updateUI];
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
XSL_FO_Renderer *xfr = [[[XSL_FO_Renderer alloc] init] autorelease];
- xslfoRendererResultData = [xfr render:[workset result]];
+ xslfoRendererResultData = [xfr render:[workset valueForKey:@"result"]];
[pool release];
[xslfoRendererLock unlockWithCondition:2];
return;
}
- [xslfoRendererResultData retain];
- [pdfData release];
- pdfData = xslfoRendererResultData;
-
- NSImage *pdfImage = [[[NSImage alloc] initWithData:xslfoRendererResultData] autorelease];
- [pdfImage setBackgroundColor:[NSColor whiteColor]];
- [pdfImage recache];
- [pdfImage setCacheMode:NSImageCacheNever];
-
- NSClipView *clipView = (NSClipView *)[resultImageView superview];
- NSScrollView *scrollView = (NSScrollView *)[clipView superview];
-
- [resultImageView setImage:pdfImage];
- [resultImageView setFrameSize:[pdfImage size]];
- [resultImageView display];
+ [self setValue:xslfoRendererResultData forKey:@"pdfData"];
- [clipView scrollToPoint:NSMakePoint([resultImageView frame].origin.x, [resultImageView frame].size.height - [clipView frame].size.height + [resultImageView frame].origin.y)];
- [scrollView reflectScrolledClipView:clipView];
-
- pdfPageCount = [[[pdfImage representations] objectAtIndex:0] pageCount];
- pdfCurrentPage = 0;
+// todo fixe these
+// pdfPageCount = [[[pdfImage representations] objectAtIndex:0] pageCount];
+// pdfCurrentPage = 0;
+
+ PDFDocument *doc = [[[PDFDocument alloc] initWithData:xslfoRendererResultData] autorelease];
+ [resultPDFView setDocument:doc];
+ NSLog(@"pdfview %@", resultPDFView);
}
-- (IBAction)pdfPreviousPage:(id)sender {
-
- if (pdfCurrentPage > 0) {
- pdfCurrentPage--;
- [[[[resultImageView image] representations] objectAtIndex:0] setCurrentPage:pdfCurrentPage];
- [resultImageView setNeedsDisplay:YES];
- [self doUpdateUI];
- }
-
-}
-
-- (IBAction)pdfNextPage:(id)sender {
-
- if (pdfCurrentPage < (pdfPageCount - 1)) {
- pdfCurrentPage++;
- [[[[resultImageView image] representations] objectAtIndex:0] setCurrentPage:pdfCurrentPage];
- [resultImageView setNeedsDisplay:YES];
- [self doUpdateUI];
- }
-
-}
- (IBAction)pdfSaveAs:(id)sender {
return @"MyDocument";
}
-- (void)windowControllerDidLoadNib:(NSWindowController *) aController
-{
-
-
+//- (void)awakeFromNib {
+// NSLog(@"awake %@", [self valueForKey:@"processorType"]);
+// [self switchProcessorToType:2 updateUI:YES];
+//}
+
+- (void)windowControllerDidLoadNib:(NSWindowController *) aController {
+
NSSize errorDrawerSize;
[super windowControllerDidLoadNib:aController];
-
- [resultImageView setImageFrameStyle:NSImageFramePhoto];
- [resultImageView setImageScaling:NSScaleNone];
- [resultImageView setImageAlignment:NSImageAlignCenter];
- [resultImageView setEditable:NO];
[resultWebView setTextSizeMultiplier:0.9];
[resultView setFont:computerFont];
[tabView registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, nil]];
-
-
if (findPanelController == nil) {
findPanelController = [[FindPanelController alloc] initWithWindowNibName:@"FindPanel"];
unsavedChangesPanelController = [[UnsavedChangesPanelController alloc] initWithWindowNibName:@"UnsavedChanges"];
// NSLog(@"init unsaved changes panel controller: %@", unsavedChangesPanelController);
}
-
+
+// [self switchProcessorToType:2 updateUI:YES];
+
+// [processorTypePopUp selectItemAtIndex:[processorTypePopUp indexOfItemWithTag:[[self valueForKey:@"processorType"] intValue]]];
+
+ [self switchProcessorToType:[[self valueForKey:@"processorType"] intValue] updateUI:YES];
+
}
}
-- (NSData *)dataRepresentationOfType:(NSString *)aType
-{
- // Insert code here to write your document from the given data. You can also choose to override -fileWrapperRepresentationOfType: or -writeToFile:ofType: instead.
- return [NSArchiver archivedDataWithRootObject:workset];
+- (NSData *)dataRepresentationOfType:(NSString *)aType {
+ NSMutableData *data = [[[NSMutableData alloc] init] autorelease];
+ NSKeyedArchiver *archiver = [[[NSKeyedArchiver alloc] initForWritingWithMutableData:data] autorelease];
+ [archiver setOutputFormat:NSPropertyListXMLFormat_v1_0];
+ [archiver encodeObject:workset forKey:@"workset"];
+ [archiver encodeInt:[processor processorType] forKey:@"processorType"];
+ [archiver finishEncoding];
+ return data;
}
-- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType
-{
- // Insert code here to read your document from the given data. You can also choose to override -loadFileWrapperRepresentation:ofType: or -readFromFile:ofType: instead.
- [workset release];
- workset = [[NSUnarchiver unarchiveObjectWithData:data] retain];
- [self updateCompleteUI];
+- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType {
- return YES;
+ NSKeyedUnarchiver *unarchiver = [[[NSKeyedUnarchiver alloc] initForReadingWithData:data] autorelease];
+
+ [self setValue:[unarchiver decodeObjectForKey:@"workset"] forKey:@"workset"];
+
+ int docProcessorType = [unarchiver decodeIntForKey:@"processorType"];
+
+ if (docProcessorType) {
+ [self setValue:[NSNumber numberWithInt:docProcessorType] forKey:@"processorType"];
+ }
+
+ [unarchiver finishDecoding];
+ return YES;
}
+
+
@end