From 4a9e9737832222dac26551c90af7279b348690b2 Mon Sep 17 00:00:00 2001 From: Bibiko Date: Fri, 25 Jun 2010 22:26:23 +0000 Subject: =?UTF-8?q?=E2=80=A2=20further=20progress=20for=20open/save=20sess?= =?UTF-8?q?ion=20-=20remember=20window=20position=20-=20remember=20save=20?= =?UTF-8?q?accessory=20view=20settings=20in=20spfs=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/SPAppController.m | 24 ++++++++++++++---------- Source/SPDatabaseDocument.m | 9 +++++++++ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/Source/SPAppController.m b/Source/SPAppController.m index 7d44ee0c..f86a77cf 100644 --- a/Source/SPAppController.m +++ b/Source/SPAppController.m @@ -329,17 +329,10 @@ for(NSDictionary *window in [[[spfs objectForKey:@"windows"] reverseObjectEnumerator] allObjects]) { - static NSPoint cascadeLocation = {.x = 0, .y = 0}; - // Create a new window controller, and set up a new connection view within it. SPWindowController *newWindowController = [[SPWindowController alloc] initWithWindowNibName:@"MainWindow"]; NSWindow *newWindow = [newWindowController window]; - // Cascading defaults to on - retrieve the window origin automatically assigned by cascading, - // and convert to a top left point. - NSPoint topLeftPoint = [newWindow frame].origin; - topLeftPoint.y += [newWindow frame].size.height; - // The first window should use autosaving; subsequent windows should cascade. // So attempt to set the frame autosave name; this will succeed for the very // first window, and fail for others. @@ -348,8 +341,8 @@ [newWindow setFrameUsingName:@"DBView"]; } - // Cascade according to the statically stored cascade location. - cascadeLocation = [newWindow cascadeTopLeftFromPoint:cascadeLocation]; + if([window objectForKey:@"frame"]) + [newWindow setFrame:NSRectFromString([window objectForKey:@"frame"]) display:NO]; // Set the window controller as the window's delegate [newWindow setDelegate:newWindowController]; @@ -389,10 +382,21 @@ } [newWindowController selectTabAtIndex:[[window objectForKey:@"selectedTabIndex"] intValue]]; - [[NSApp delegate] setSessionURL:filename]; } + + NSMutableDictionary *spfsDocData = [NSMutableDictionary dictionary]; + [spfsDocData setObject:[NSNumber numberWithBool:[[spfs objectForKey:@"encrypted"] boolValue]] forKey:@"encrypted"]; + [spfsDocData setObject:[NSNumber numberWithBool:[[spfs objectForKey:@"auto_connect"] boolValue]] forKey:@"auto_connect"]; + [spfsDocData setObject:[NSNumber numberWithBool:[[spfs objectForKey:@"save_password"] boolValue]] forKey:@"save_password"]; + [spfsDocData setObject:[NSNumber numberWithBool:[[spfs objectForKey:@"include_session"] boolValue]] forKey:@"include_session"]; + [spfsDocData setObject:[NSNumber numberWithBool:[[spfs objectForKey:@"save_editor_content"] boolValue]] forKey:@"save_editor_content"]; + + [[NSApp delegate] spfSessionDocData:spfsDocData]; + [[NSApp delegate] setSessionURL:filename]; + } + [spfs release]; } else { diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m index 83288cda..86cfb117 100644 --- a/Source/SPDatabaseDocument.m +++ b/Source/SPDatabaseDocument.m @@ -2985,6 +2985,14 @@ } + [info setObject:[NSNumber numberWithBool:[[spfDocData_temp objectForKey:@"encrypted"] boolValue]] forKey:@"encrypted"]; + [info setObject:[NSNumber numberWithBool:[[spfDocData_temp objectForKey:@"auto_connect"] boolValue]] forKey:@"auto_connect"]; + [info setObject:[NSNumber numberWithBool:[[spfDocData_temp objectForKey:@"save_password"] boolValue]] forKey:@"save_password"]; + [info setObject:[NSNumber numberWithBool:[[spfDocData_temp objectForKey:@"include_session"] boolValue]] forKey:@"include_session"]; + [info setObject:[NSNumber numberWithBool:[[spfDocData_temp objectForKey:@"save_editor_content"] boolValue]] forKey:@"save_editor_content"]; + [info setObject:[NSNumber numberWithInteger:1] forKey:@"version"]; + [info setObject:@"connection bundle" forKey:@"format"]; + // Loop through all windows for(NSWindow *window in [[NSApp delegate] orderedDatabaseConnectionWindows]) { @@ -3021,6 +3029,7 @@ } [win setObject:tabs forKey:@"tabs"]; [win setObject:[NSNumber numberWithInteger:selectedTabItem] forKey:@"selectedTabIndex"]; + [win setObject:NSStringFromRect([window frame]) forKey:@"frame"]; [windows addObject:win]; } [info setObject:windows forKey:@"windows"]; -- cgit v1.2.3