forked from brotherbard/gitx
-
Notifications
You must be signed in to change notification settings - Fork 1
/
PBWebGitController.m
85 lines (67 loc) · 1.99 KB
/
PBWebGitController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//
// PBWebGitController.m
// GitTest
//
// Created by Pieter de Bie on 14-06-08.
// Copyright 2008 __MyCompanyName__. All rights reserved.
//
#import "PBWebGitController.h"
@implementation PBWebGitController
@synthesize diff;
- (void) awakeFromNib
{
[detailController addObserver:self forKeyPath:@"webCommit" options:0 context:@"ChangedCommit"];
NSLog([[NSBundle mainBundle] resourcePath]);
NSString* file = [[NSBundle mainBundle] pathForResource:@"commit" ofType:@"html"];
NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:file]];
currentSha = @"Not Loaded";
[[view mainFrame] loadRequest:request];
}
- (void) webView:(id) v didFinishLoadForFrame:(id) frame
{
id script = [view windowScriptObject];
[script setValue: self forKey:@"Controller"];
currentSha = @"";
[self changeContentTo: detailController.webCommit];
}
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (context == @"ChangedCommit") {
[self changeContentTo: detailController.webCommit];
}
else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}
- (void) changeContentTo: (PBGitCommit *) content
{
if (content == nil)
return;
if ([currentSha isEqualToString: content.sha] || [currentSha isEqualToString:@"Not Loaded"])
return;
currentSha = content.sha;
id script = [view windowScriptObject];
[script setValue: content forKey:@"CommitObject"];
[script callWebScriptMethod:@"loadCommit" withArguments: nil];
}
- (void) log: (NSString*) logMessage
{
NSLog(logMessage);
}
- (void) selectCommit: (NSString*) sha
{
[detailController selectCommit:sha];
}
- (void) sendKey: (NSString*) key
{
id script = [view windowScriptObject];
[script callWebScriptMethod:@"handleKeyFromCocoa" withArguments: [NSArray arrayWithObject:key]];
}
+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector
{
return NO;
}
+ (BOOL)isKeyExcludedFromWebScript:(const char *)name {
return NO;
}
@end